{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Network Security - Portscan"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Network operators actively monitor their networks to protect against various intrusion attacks. Network attackers often perform random \"portscans\" of IP addresses to find vulnerable machines to compromise. Network Intrusion Detection Systems (NIDS) attempt to detect such behavior and flag these portscanners as malicious. \n",
    "\n",
    "In this assignment, you will analyze the NetFlow network measurement data to identify potentially malicious traffic sent to the Princeton campus network. You will then simulate an online algorithm for identifying malicious remote hosts.\n",
    "\n",
    "This notebook has several parts. Each part contains sections marked TODO that you need to complete.\n",
    "\n",
    "**Put your name and netID in the cell below:**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Name:**\n",
    "\n",
    "**NetId:**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Parsing IPFIX Data\n",
    "The `netflow.csv` file contains pre-processed netflow data from a Princeton campus network border router. The data is \"unsampled,\" i.e. it compiles flow statistics for every packet that traverses any interface on the border router.  We used the `nfdump` tool to process the raw NetFlow data that the router collected. Each row of the `netflow.csv` file, except for the header on top, logs the following information for a flow:\n",
    "\n",
    "```\n",
    "Date first seen, Time first seen (m:s), Date last seen, Time last seen (m:s), Duration (s), Protocol, \n",
    "Src IP addr, Src port, Dst IP addr, Dst port, Packets, Bytes, Flags, Input interface, Output interface\t\t\n",
    "\n",
    "```\n",
    "\n",
    "To analyze this data, we first need to read it into a python data structure.  The following code uses the built-in `csv` library to read `netflow.csv` into a list of dictionaries.  The `csv` library documentation is here if you are interested: https://docs.python.org/2/library/csv.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of flow records: 105360\n",
      "\n",
      "Sample flow entry: {'Dst IP addr': '128.112.213.189', 'Protocol': 'ICMP', 'Bytes': '94', 'Src port': '0', 'Src IP addr': '172.16.241.1', 'Input interface': '120', 'Packets': '1', 'Date first seen': '10/29/15', 'Output interface': '0', 'Duration (s)': '0', 'Time first seen (m:s)': '04:48.9', 'Flags': '.A....', 'Time last seen (m:s)': '04:48.9', 'Dst port': '11', 'Date last seen': '10/29/15'}\n"
     ]
    }
   ],
   "source": [
    "import csv\n",
    "\n",
    "with open('netflow.csv', 'r') as netflow_file:\n",
    "    netflow_reader = csv.DictReader(netflow_file)\n",
    "    netflow_data = list(netflow_reader)\n",
    "    \n",
    "print \"Number of flow records: {}\".format(len(netflow_data))\n",
    "print\n",
    "print \"Sample flow entry: {}\".format(netflow_data[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ** Part A: TCP SYN Scan Detection**\n",
    "\n",
    "In this part of the assignment, you will analyze TCP flow records to look for a TCP SYN scan attack. A [TCP SYN scan](https://en.wikipedia.org/wiki/Port_scanner#SYN_scanning) involves sending a TCP SYN packet to many different destinations to discover vulnerable machines on the network with open ports"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Background"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the previous assignment, we analyzed popular destinations by number of flows and by overall traffic volume. Such higher level statistics provide a coarse view of the network anomalies, but these statistics reveal less useful information about attacks and intrusion attempts. \n",
    "\n",
    "Abnormal activities are often difficult to detect amongst the amount of legitimate traffic that is typically found in a large enterprise network. Malicious hosts might not show up in lists of the top senders (either by bytes or by flows), and it can be difficult to determine the exact nature of attack traffic in advance. \n",
    "\n",
    "However, certain types of attacks have characteristic features that simplify their detection. For example, many attackers attempt to detect hosts running vulnerable services by scanning the address space using TCP SYN packets.  If a NetFlow record indicates that a flow contained a TCP SYN packet _but no packets with the ACK flag set_, we can conclude that this flow never completed and thus may be part of a TCP SYN scan---particularly if there are a lot of these flows.\n",
    "\n",
    "When an attacker sends a TCP SYN packet as part of a TCP SYN scan, there are three possible outcomes:\n",
    "- There is an active host at the destination IP address that is listening on the destination port of the SYN packet. In this case, the NetFlow record will contain both the TCP SYN and ACK flags in the flow record. These flows are difficult to distinguish from legitimate flows, because in this case a host actually answered the initial SYN. \n",
    "- There is no active host on the network at the destination IP address. In this case, we will only see TCP SYN flag. This is very different from the legitimate traffic behavior. It should be possible to identify malicious scanners by identifying these flows.\n",
    "- The destination is alive, but the port to which the SYN is sent is closed. If a client connects to a server's non-listening port, the server will send back a RST/ACK packet. According to normal TCP implementation guidelines, the scanner will immediately stop any TCP connection attempts once it receives a RST. Like in the previous case, the NetFlow record will show SYN requests from the scanner host to the destination host but no SYN/ACK packets in response."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analysis\n",
    "\n",
    "Let's first explore our NetFlow trace to determine whether the Princeton University campus network observes significant traffic with TCP SYN flags only (i.e., flows with TCP SYNs but no ACKs). \n",
    "\n",
    "In the following cell, determine the percentage of TCP flows in `netflow_data` that have SYN packet but no ACK packet. A flow has a SYN packet if there is an \"S\" in the \"Flags\" field.  A flow has an ACK packet if there is an \"A\" in the flags field.  Be sure to only consider TCP traffic (use the \"Protocol\" field).  \n",
    "\n",
    "Print the percentage you found at the end of the cell with an informative label (e.g. `print \"Percent SYN-only flows: {}\".format(percent_synonly)`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "64993\n",
      "Percent SYN-only flows: 88.4330693662\n"
     ]
    }
   ],
   "source": [
    "# TODO: determine the percentage of TCP flows in netflow_data that had a SYN packet but no ACK packet\n",
    "synonly = 0\n",
    "total_TCP = 0\n",
    "\n",
    "for i in netflow_data:\n",
    "    if i['Protocol'] == 'TCP':\n",
    "        total_TCP+=1\n",
    "        if 'S' in i['Flags'] and 'A' not in i['Flags']:\n",
    "            synonly+=1\n",
    "            \n",
    "print(synonly)\n",
    "percent_synonly = float(float(synonly)/float(total_TCP))*100\n",
    "print \"Percent SYN-only flows: {}\".format(percent_synonly)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check your answer by passing it (as a float between 0 and 100) to the `check_synonly_percentage()` function below.  This compares the md5 hash of your answer (rounded to the nearest int) against the md5 hash of the correct answer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hashes match. Your percentage of SYN-only flows is correct.\n"
     ]
    }
   ],
   "source": [
    "from testing import check_synonly_percent\n",
    "\n",
    "# TODO: pass the percentage of SYN-only TCP flows to the following function\n",
    "\n",
    "check_synonly_percent(percent_synonly)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each of the flows that fall into this category are TCP SYN scan candidates."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## **Part B: Port Scan Detection Using Known Bad Ports**\n",
    "\n",
    "Another method of identifying attacks involves using TCP ports that are known to correspond to particularly vulnerable services.  For this assignment, we will consider ports 135, 139, 445, and 1433 as known bad ports. These correspond to Windows RPC, NetBIOS, SMB, and SQL-Snake attacks. We expect that most of the traffic to \"known bad\" ports are scanners, but that is not necessarily true for all traffic to these ports.  \n",
    "\n",
    "In the following cell, test this hypothesis by identifying which flows in the NetFlow data are to known bad ports on the Princeton network (regardless of IP address). Then see whether these flows are more likely to be TCP SYN scans then flows to other ports:\n",
    "\n",
    "1. Divide all the TCP flows in `netflow_data` into the following categories:\n",
    "   1. SYN-only flows to known bad ports\n",
    "   2. Other flows to known bad ports\n",
    "   3. SYN-only flows to other ports'\n",
    "   4. Other flows to other ports\n",
    "\n",
    "2. From these sets, calculate the following three percentages, store them in variables, and print them with informative labels:\n",
    "   1. Precent of flows to known bad ports out of all TCP flows\n",
    "   2. Percent of SYN-only flows out of all TCP flows to known bad ports\n",
    "   3. Percent of SYN-only flows out of all TCP flows to other ports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5.895719378452663, 99.79229171474728, 87.72140368126546)\n"
     ]
    }
   ],
   "source": [
    "# TODO write code as described above\n",
    "bad_ports = [\"135\", \"139\", \"445\", \"1433\"]\n",
    "\n",
    "def calresult(n,m):\n",
    "    return float(float(n)/float(m))*100\n",
    "\n",
    "total_SYN_to_bad = 0\n",
    "total_to_bad = 0\n",
    "total_SYN_to_other = 0\n",
    "total_to_other = 0\n",
    "for i in netflow_data:\n",
    "    if i['Protocol'] == 'TCP':\n",
    "        if i[ 'Dst port'] in bad_ports:\n",
    "            total_to_bad+=1\n",
    "            if 'S' in i['Flags'] and 'A' not in i['Flags']:\n",
    "                total_SYN_to_bad+=1\n",
    "        else:\n",
    "            total_to_other +=1\n",
    "            if 'S' in i['Flags'] and 'A' not in i['Flags']:\n",
    "                total_SYN_to_other+=1\n",
    "percent_knownbad = calresult(total_to_bad,total_TCP)\n",
    "percent_synonly_knownbad = calresult(total_SYN_to_bad,total_to_bad)\n",
    "percent_synonly_other = calresult(total_SYN_to_other,total_to_other)\n",
    "print(percent_knownbad,percent_synonly_knownbad,percent_synonly_other)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check the 3 percentages you found in the previous cell by passing them to the corresponding `check` functions below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hashes match. Your percentage of known bad flows is correct.\n",
      "Hashes match. Your percentage of SYN-only flows out of the known bad flows is correct.\n",
      "Hashes match. Your percentage of SYN-only flows out of the remaining flows is correct.\n"
     ]
    }
   ],
   "source": [
    "from testing import check_percent_knownbad, check_percent_synonly_knownbad, check_percent_synonly_other\n",
    "\n",
    "# TODO: pass percent values to following check functions\n",
    "check_percent_knownbad(percent_knownbad)\n",
    "check_percent_synonly_knownbad(percent_synonly_knownbad)\n",
    "check_percent_synonly_other(percent_synonly_other)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In addition to identifying potentially malicious flows, a network operator would like to identify potentially malicious hosts. The operator can then block future traffic from these hosts. \n",
    "_______________________________"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Question 1:\n",
    "Why is it necessary to identify malicious hosts in order to stop port scans in real traffic? Why isn't identifying SYN-only flows sufficient? "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Answer 1:\n",
    "*TODO: your answer here.*\n",
    "通过上面的数据可以发现，仅SYN流不管是流向向其他端口还是流向恶意端口的百分比都非常高，而总的来看，流向坏端口的流很少。这会导致虽然坏端口绝大部分是SYN流，但因为占比少不容易在SYN-Only的检测方法中被显著地检测出来，从而不那么有效。\n",
    "除此之外，即使是正常的网络活动，也可能产生SYN-only流。如果仅基于SYN-only流来识别恶意主机，可能会导致误报，将正常行为误判为恶意行为。\n",
    "而且，攻击者可能使用更隐蔽的扫描技术探测端口，而这些扫描方式可能不会产生大量的SYN-only流。在这种时候，了解哪些端口容易受到攻击比了解仅仅一种探测方法要更加实用。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "_________________________\n",
    "However, network operators want to avoid blocking benign traffic.  The potential for blocking benign traffic depends on the overlap between hosts that send malicious-looking traffic and hosts that send normal traffc. \n",
    "\n",
    "Complete the following code to find this overlap:\n",
    "1. Find a set of all hosts (IP addresses) that sent SYN-only or known bad port flows to Princeton during the recorded netflow data. We will call these the \"malicious hosts\"\n",
    "2. Find a set of all hosts that sent non-SYN-only flows to other (not known bad) ports. We will call these the \"benign hosts\"\n",
    "2. Find the intersection of the malicious hosts with the benign hosts. We will call this intersection the \"questionable\" hosts.\n",
    "3. Remove these \"questionable\" hosts from the \"malicious hosts\" and \"benign hosts\" sets.\n",
    "3. Calculate and print 3 values with informative labels:\n",
    "    1. The number of remaining malicious hosts \n",
    "    2. The number of remaining benign hosts\n",
    "    3. The number of questionable hosts\n",
    "\n",
    "Only include flows with source IPs external to the Princeton network (not 128.112.\\*.\\*).   We have provided an `internalIP()` function that returns True if the argument IP address is from within the Princeton network. \n",
    "\n",
    "The python `set` type will be useful, documentation here: https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(12, 66, 4479)\n",
      "set(['49.142.226.98', '182.52.148.207', '104.156.228.147', '173.178.186.44', '218.28.92.228', '27.208.166.28', '141.212.122.103', '117.194.114.15', '86.40.88.79', '119.137.250.49', '119.101.9.21', '115.29.2.4', '62.150.12.49', '46.24.20.25', '193.106.125.67', '59.95.23.13', '78.190.168.194', '112.237.121.78', '188.241.21.48', '94.102.48.194', '212.225.151.226', '205.172.167.174', '171.212.136.170', '183.194.114.68', '141.212.122.100', '117.42.124.227', '14.161.15.116', '206.161.220.78', '110.82.25.232', '171.110.176.129', '220.133.195.115', '113.75.219.170', '123.166.196.163', '88.2.135.143', '118.76.137.107', '211.60.70.12', '222.66.38.138', '42.103.77.130', '98.203.15.254', '58.249.19.101', '60.186.143.75', '125.95.14.168', '37.57.16.177', '14.104.185.64', '186.212.87.111', '112.245.235.188', '49.114.238.45', '116.4.30.56', '84.22.57.146', '92.87.164.92', '124.129.22.2', '114.111.166.95', '114.224.133.228', '189.41.104.196', '62.192.240.103', '180.253.241.201', '87.252.59.77', '177.69.82.113', '62.210.206.219', '202.100.205.246', '121.161.64.111', '92.114.239.14', '188.190.223.197', '122.228.176.42', '188.36.150.81', '122.176.167.237', '216.24.79.34', '122.228.141.162', '36.22.40.173', '31.30.37.64', '187.45.96.253', '123.119.175.88', '200.3.184.202', '46.201.132.129', '37.147.151.110', '178.223.226.93', '185.83.198.250', '115.146.126.144', '5.99.197.217', '64.125.239.219', '64.125.239.218', '64.125.239.217', '64.125.239.216', '64.125.239.215', '64.125.239.214', '64.125.239.213', '64.125.239.212', '209.118.225.60', '64.125.239.210', '92.36.147.148', '123.157.208.7', '183.189.162.145', '218.20.152.248', '216.53.207.68', '79.177.146.251', '113.81.194.178', '222.161.208.125', '106.115.112.216', '1.204.139.125', '27.3.96.65', '173.58.23.56', '39.164.241.175', '64.125.239.20', '108.36.251.89', '178.60.39.68', '27.129.146.0', '60.181.63.75', '115.152.51.64', '81.211.125.195', '1.204.18.161', '78.154.93.232', '58.97.226.237', '117.29.110.254', '182.135.71.34', '181.118.193.178', '171.90.219.73', '187.111.8.2', '85.25.103.50', '201.18.127.50', '116.20.131.108', '111.12.82.18', '84.197.60.200', '61.145.30.107', '64.125.239.109', '64.125.239.108', '201.242.221.111', '64.125.239.103', '64.125.239.102', '64.125.239.101', '64.125.239.100', '64.125.239.107', '64.125.239.106', '58.45.167.122', '64.125.239.104', '39.83.210.236', '24.111.202.99', '14.151.39.147', '119.39.247.130', '41.225.106.90', '221.237.178.35', '31.223.73.156', '123.164.12.135', '116.21.162.8', '112.197.32.6', '220.134.82.3', '203.115.98.22', '182.73.186.225', '188.15.198.131', '78.31.17.38', '118.112.61.145', '27.189.63.186', '197.53.58.208', '123.157.70.108', '162.248.10.134', '183.48.162.104', '177.100.127.14', '203.168.175.70', '111.246.42.132', '60.28.108.25', '223.198.114.180', '171.106.199.50', '1.190.12.100', '218.205.187.34', '46.130.127.122', '116.27.226.13', '121.115.121.59', '109.44.2.101', '197.44.116.83', '119.145.72.163', '42.57.219.158', '189.55.242.136', '188.138.1.218', '119.180.35.50', '120.150.29.211', '188.68.189.66', '12.163.78.226', '115.92.91.242', '74.82.47.30', '177.106.163.134', '124.161.166.143', '41.44.179.135', '202.100.206.180', '113.110.155.181', '140.207.149.58', '37.148.209.150', '200.38.83.52', '119.129.74.217', '58.209.22.43', '112.167.45.111', '211.60.126.71', '113.102.250.63', '117.172.26.187', '62.210.132.11', '122.160.34.84', '82.79.244.70', '42.91.165.171', '176.35.186.16', '200.119.12.42', '10.129.171.74', '123.150.39.22', '119.203.16.232', '1.235.195.234', '182.243.61.194', '180.64.207.224', '163.177.136.39', '171.224.0.129', '1.191.225.208', '14.151.21.255', '223.72.72.84', '191.176.27.221', '122.154.24.254', '141.212.122.140', '180.136.183.153', '119.76.70.109', '82.77.173.227', '36.40.211.41', '91.201.119.228', '117.146.89.6', '74.208.113.200', '171.107.13.247', '70.112.236.92', '121.153.227.172', '124.13.91.78', '95.228.213.205', '31.198.143.130', '61.138.108.130', '76.65.194.132', '92.67.141.118', '223.73.106.64', '122.152.52.9', '175.2.184.53', '203.147.10.65', '121.226.132.130', '58.52.132.45', '62.210.132.6', '50.204.188.142', '5.78.162.80', '58.52.132.41', '173.72.43.4', '62.173.36.139', '101.109.246.90', '200.195.135.82', '115.68.108.100', '192.1.7.152', '82.78.244.2', '122.141.132.117', '113.104.34.230', '189.186.79.11', '123.188.193.169', '183.157.72.53', '27.251.201.54', '210.64.28.117', '58.140.209.131', '58.140.209.133', '46.29.248.181', '223.148.148.164', '189.89.173.146', '183.2.83.101', '94.71.111.163', '213.165.171.4', '108.41.6.160', '96.38.85.162', '37.104.233.207', '219.98.166.24', '204.12.226.114', '10.254.0.130', '120.195.115.219', '113.56.206.51', '27.151.186.12', '118.139.235.147', '83.15.102.122', '111.164.74.69', '46.143.233.5', '166.62.116.229', '171.110.45.126', '116.30.81.53', '62.201.201.147', '183.206.177.167', '120.29.155.74', '71.36.164.49', '78.190.224.151', '95.140.194.27', '10.1.17.140', '61.176.226.169', '123.181.6.239', '173.165.68.174', '5.77.224.180', '116.6.102.114', '69.200.247.96', '182.18.166.104', '64.125.239.19', '75.112.6.10', '119.53.169.40', '106.110.109.11', '202.100.239.12', '68.122.60.113', '1.163.14.93', '221.214.14.198', '85.192.189.174', '113.53.252.109', '78.238.24.7', '180.211.162.154', '106.120.104.35', '123.244.211.135', '203.128.78.149', '218.25.90.47', '190.193.42.162', '117.135.250.44', '27.46.135.173', '188.51.137.195', '59.50.128.86', '115.146.122.183', '120.71.205.119', '182.200.144.45', '180.252.35.14', '5.187.78.171', '180.93.17.41', '118.39.207.194', '139.193.147.27', '220.79.120.164', '108.80.49.39', '183.23.232.201', '110.246.146.230', '222.72.176.252', '36.226.103.44', '27.186.216.44', '115.248.28.41', '223.73.68.23', '64.125.239.15', '90.185.175.203', '95.70.43.55', '117.199.39.61', '58.221.148.18', '59.125.226.222', '49.75.221.116', '172.72.118.214', '59.34.190.122', '219.149.57.222', '171.221.132.16', '88.248.120.171', '1.32.70.108', '211.224.31.219', '24.42.242.61', '218.87.100.10', '221.120.237.99', '58.140.209.37', '200.97.233.58', '114.43.15.205', '1.249.22.120', '219.149.54.176', '120.73.1.224', '120.37.254.84', '113.237.2.171', '14.217.158.61', '221.219.96.156', '180.157.182.24', '120.32.11.62', '113.249.145.228', '180.160.125.23', '197.48.13.231', '183.206.205.232', '120.33.151.22', '121.244.121.98', '124.115.178.70', '200.107.238.125', '49.87.152.18', '172.20.48.193', '186.88.46.86', '183.28.112.5', '223.73.245.234', '113.70.88.139', '203.127.102.236', '81.108.158.104', '41.131.216.109', '108.61.201.142', '95.9.137.79', '58.62.255.157', '113.142.238.149', '117.86.120.252', '116.58.240.201', '177.36.8.82', '124.79.89.51', '194.164.143.222', '195.62.14.130', '121.42.205.186', '14.23.185.240', '95.226.186.7', '46.151.55.40', '123.122.57.153', '113.64.88.72', '183.206.184.58', '93.117.51.195', '182.147.12.34', '117.212.92.45', '117.194.104.14', '124.123.51.86', '201.155.173.138', '168.187.163.78', '183.148.148.205', '92.211.67.223', '182.134.24.152', '122.170.144.237', '189.128.199.158', '117.247.177.154', '113.93.121.199', '100.8.211.67', '121.200.54.227', '108.27.249.89', '1.202.189.161', '123.109.29.233', '27.129.199.65', '222.79.185.127', '222.79.13.10', '211.142.138.198', '151.52.17.111', '115.229.21.181', '179.178.195.12', '180.156.56.132', '109.111.122.94', '91.98.38.110', '123.121.110.143', '78.187.143.232', '223.73.19.243', '117.60.209.185', '95.220.176.190', '218.92.176.211', '65.185.77.217', '113.63.101.59', '124.94.34.235', '88.248.179.123', '211.152.49.126', '120.203.79.18', '201.72.36.24', '121.236.78.251', '60.191.40.172', '27.207.65.84', '220.186.191.75', '60.25.227.49', '113.249.117.37', '219.79.237.246', '141.255.166.33', '61.158.84.1', '113.247.88.138', '219.137.91.231', '113.237.119.79', '218.205.19.53', '218.199.82.91', '213.211.37.11', '188.50.1.149', '60.180.178.21', '110.143.58.144', '217.77.212.67', '64.125.239.234', '36.224.192.106', '187.237.120.37', '193.242.208.192', '60.251.234.3', '173.57.196.177', '123.255.202.226', '200.66.66.180', '117.147.190.25', '110.34.32.147', '189.60.40.219', '36.22.35.132', '95.104.96.174', '180.136.196.174', '121.228.246.34', '175.2.153.157', '200.52.73.148', '217.66.156.145', '123.160.94.193', '113.247.252.204', '115.196.223.4', '119.253.41.162', '200.106.150.147', '121.56.92.226', '64.125.239.191', '123.186.76.202', '218.24.171.216', '112.244.33.145', '112.101.31.20', '223.73.174.246', '85.93.131.170', '60.249.148.16', '95.241.161.69', '27.46.135.85', '112.0.89.147', '202.97.194.169', '114.92.55.168', '171.37.106.58', '119.53.20.207', '38.229.1.15', '125.86.91.70', '167.114.14.77', '74.126.180.98', '112.238.103.254', '182.203.150.164', '79.28.1.171', '114.35.4.251', '64.125.239.2', '118.119.174.8', '121.78.190.26', '117.91.50.83', '121.78.190.10', '64.125.239.211', '82.97.200.3', '64.125.239.4', '110.53.151.19', '46.98.55.252', '203.188.225.107', '218.59.71.34', '49.231.237.150', '61.161.158.158', '181.110.162.68', '81.12.182.174', '14.153.244.241', '162.252.123.43', '109.75.42.22', '106.120.32.157', '116.52.156.226', '60.255.1.211', '64.125.239.9', '183.158.121.21', '14.118.28.167', '183.140.44.84', '112.117.217.75', '182.45.245.152', '116.211.0.90', '94.228.200.224', '93.67.189.186', '93.87.252.167', '185.79.4.15', '110.177.138.166', '119.160.215.10', '219.132.0.242', '222.86.66.93', '27.54.121.209', '221.237.178.42', '27.157.32.152', '223.72.64.27', '125.24.144.245', '59.61.227.10', '122.147.30.193', '194.143.145.246', '113.104.34.15', '59.46.189.92', '187.122.165.246', '207.173.152.26', '79.148.101.32', '178.74.1.92', '218.4.72.234', '41.67.53.22', '200.110.196.7', '113.238.239.238', '190.183.209.4', '175.196.184.41', '114.111.166.102', '31.211.156.31', '113.17.130.24', '42.87.219.39', '125.212.35.211', '92.127.220.135', '31.168.5.114', '116.16.193.17', '182.200.97.91', '118.114.246.220', '27.187.7.246', '115.202.253.77', '118.124.79.31', '61.185.206.23', '210.86.231.18', '183.252.241.225', '163.53.247.3', '178.64.33.66', '121.229.66.94', '116.209.149.242', '119.83.210.105', '189.36.194.22', '187.78.19.99', '112.164.34.8', '119.186.79.159', '27.2.143.5', '61.177.119.232', '94.55.174.249', '122.194.164.85', '85.114.111.54', '220.126.66.18', '171.223.188.25', '121.97.89.238', '58.97.172.179', '97.68.206.16', '78.140.33.9', '94.185.249.98', '216.240.143.112', '112.22.96.100', '212.225.151.149', '83.239.166.67', '190.224.150.96', '59.39.103.120', '222.234.24.27', '122.244.29.147', '202.130.106.17', '58.140.209.216', '124.105.121.24', '110.182.99.115', '85.25.43.94', '118.182.77.214', '113.13.186.131', '115.210.246.247', '36.228.226.200', '201.52.142.154', '119.62.154.129', '201.210.215.215', '201.71.240.249', '121.173.17.152', '171.4.249.172', '42.232.44.106', '89.186.201.132', '64.125.239.73', '110.90.35.11', '59.28.97.80', '111.140.21.88', '218.69.247.6', '188.117.194.120', '121.32.119.75', '122.155.197.50', '119.129.158.7', '14.153.21.222', '119.101.129.154', '186.149.186.227', '118.36.48.210', '111.243.28.85', '114.92.33.247', '220.184.33.22', '187.189.116.152', '14.215.167.195', '186.113.190.218', '112.120.117.232', '220.255.35.231', '217.165.225.113', '223.10.142.133', '201.46.62.48', '213.4.20.43', '221.120.217.100', '183.158.204.236', '182.129.215.248', '220.163.121.202', '114.32.12.83', '96.88.10.130', '114.226.145.65', '183.29.224.24', '110.164.187.251', '110.180.20.8', '182.96.137.171', '115.171.71.214', '148.204.118.157', '112.20.110.236', '46.175.160.107', '175.180.209.188', '112.87.55.179', '92.63.83.39', '36.43.100.186', '175.43.47.97', '61.178.13.134', '87.202.90.197', '120.195.181.181', '121.130.188.6', '179.127.143.35', '152.238.133.35', '112.161.6.121', '103.54.200.12', '60.25.31.219', '222.90.78.58', '220.160.220.147', '125.117.1.55', '220.130.184.195', '80.59.132.67', '188.48.85.254', '119.130.70.111', '45.63.122.192', '114.215.103.237', '89.97.137.35', '45.118.148.53', '112.81.156.42', '63.142.244.161', '208.89.123.110', '193.227.19.120', '180.251.34.63', '112.28.33.212', '123.160.207.132', '115.31.145.24', '112.103.146.83', '58.140.210.249', '92.115.172.64', '191.115.250.48', '61.164.149.49', '113.162.154.229', '85.247.37.130', '114.85.44.202', '123.233.231.248', '85.250.30.10', '106.92.248.203', '113.63.121.24', '108.81.149.159', '222.161.201.244', '85.194.113.154', '60.163.179.242', '68.44.33.226', '218.31.233.203', '218.18.125.149', '119.123.12.53', '182.200.86.62', '61.163.102.162', '5.236.18.18', '27.2.127.34', '141.212.122.97', '141.212.122.96', '141.212.122.99', '141.212.122.98', '58.151.125.238', '122.170.0.78', '123.186.86.163', '180.255.13.208', '184.106.185.15', '117.9.137.98', '223.246.175.88', '181.49.207.164', '113.206.164.111', '122.178.77.68', '59.148.102.171', '178.219.175.107', '177.40.26.8', '112.171.173.85', '218.24.4.111', '5.2.176.170', '88.247.24.248', '196.47.160.191', '114.42.7.199', '110.168.232.253', '180.168.106.146', '60.165.191.146', '117.41.183.20', '91.137.246.137', '183.78.236.247', '113.14.2.116', '115.135.97.35', '116.225.137.31', '119.28.1.145', '111.85.175.10', '59.125.238.11', '91.212.217.125', '222.39.248.201', '49.82.36.142', '85.26.164.26', '171.94.68.237', '220.160.189.187', '58.44.241.220', '114.104.146.248', '112.5.236.223', '64.125.239.105', '201.232.25.160', '194.27.120.14', '212.51.210.77', '117.211.100.94', '210.22.61.113', '81.2.47.226', '82.42.5.107', '217.221.5.114', '123.141.72.238', '201.64.106.132', '60.22.84.82', '94.249.127.67', '188.138.17.205', '95.172.207.27', '1.179.165.5', '157.55.39.164', '112.133.218.26', '88.247.161.207', '113.248.37.147', '141.212.122.65', '186.105.98.129', '113.74.54.115', '182.89.23.44', '113.101.142.251', '108.29.140.205', '118.254.145.193', '36.110.33.114', '78.188.60.240', '94.153.178.94', '120.3.246.65', '195.208.51.104', '149.202.76.9', '23.251.194.202', '85.130.30.254', '189.1.162.173', '64.125.239.178', '222.89.53.129', '1.30.0.62', '59.1.242.146', '37.195.214.80', '36.75.52.170', '60.177.215.138', '114.101.129.110', '194.224.67.122', '49.77.234.27', '69.21.33.218', '223.227.143.128', '91.118.162.196', '211.55.159.35', '220.173.133.44', '60.176.45.48', '58.212.35.5', '79.100.65.153', '222.162.251.51', '223.150.244.49', '221.205.19.145', '171.215.73.160', '112.216.182.14', '77.82.216.160', '123.164.9.106', '49.80.183.55', '119.181.40.61', '222.182.24.75', '64.125.239.236', '220.171.116.42', '182.123.154.100', '183.27.3.30', '60.181.151.124', '112.134.221.222', '92.54.140.86', '122.26.23.211', '106.226.26.214', '125.39.140.17', '201.144.158.66', '74.82.47.18', '95.154.20.132', '115.49.184.126', '91.106.70.5', '31.168.68.242', '49.87.172.112', '79.140.175.110', '190.7.144.74', '74.82.47.16', '195.8.50.59', '50.192.81.210', '110.164.192.43', '83.3.67.74', '14.150.163.178', '90.188.117.199', '61.178.213.67', '222.66.158.226', '80.224.56.163', '171.212.186.192', '171.121.28.117', '218.75.45.70', '49.174.208.208', '139.203.117.154', '68.174.158.25', '175.0.53.246', '177.18.25.237', '190.14.41.38', '1.193.192.33', '10.254.0.117', '111.12.138.18', '182.43.18.234', '2.86.71.91', '106.42.248.207', '183.88.142.235', '210.108.87.46', '201.130.28.67', '222.170.91.218', '118.75.162.64', '1.253.111.31', '181.28.3.167', '112.28.9.41', '180.156.106.92', '114.244.236.103', '176.97.134.60', '12.232.132.11', '119.96.174.45', '118.114.177.64', '223.94.88.40', '180.163.108.66', '114.85.69.109', '219.74.28.78', '141.212.122.129', '220.164.66.193', '182.122.113.13', '111.171.115.47', '41.226.255.143', '219.217.4.244', '184.105.247.207', '86.124.184.125', '110.80.113.74', '183.221.100.245', '207.126.160.10', '125.227.66.122', '175.143.30.97', '189.111.73.198', '112.0.89.86', '61.183.176.170', '122.240.202.118', '95.192.98.79', '46.130.12.106', '187.188.210.132', '183.216.199.237', '119.76.71.81', '93.152.157.54', '10.2.14.75', '101.65.67.83', '113.116.72.101', '201.165.255.26', '115.238.96.98', '27.147.222.79', '76.69.232.238', '210.182.248.171', '180.166.55.66', '58.33.181.34', '183.206.82.10', '41.38.14.114', '114.35.65.20', '58.140.209.93', '189.106.18.39', '213.191.216.52', '218.31.134.88', '115.112.248.61', '80.77.152.66', '84.3.78.56', '64.125.239.81', '64.125.239.80', '64.125.239.83', '64.125.239.82', '64.125.239.85', '64.125.239.84', '64.125.239.87', '64.125.239.86', '64.125.239.89', '64.125.239.88', '125.82.0.157', '195.211.154.180', '119.120.189.255', '178.45.74.169', '95.153.68.106', '41.38.159.34', '78.106.85.237', '54.67.32.208', '115.54.231.211', '113.13.112.42', '121.207.98.168', '163.179.238.163', '137.158.187.25', '5.45.170.201', '113.162.78.171', '58.23.138.236', '111.140.23.112', '200.90.103.151', '114.111.166.41', '200.164.10.229', '198.15.216.48', '60.185.137.22', '82.81.43.189', '125.234.5.122', '140.250.123.227', '75.146.211.170', '14.156.206.124', '218.57.175.55', '139.212.136.22', '112.255.213.131', '1.34.167.235', '184.105.139.96', '185.114.22.172', '60.161.142.139', '183.141.140.210', '182.247.45.115', '125.70.83.134', '172.251.128.253', '64.125.239.74', '120.31.136.22', '175.3.95.239', '121.103.185.6', '182.202.211.246', '187.131.121.90', '118.163.255.233', '196.205.168.210', '83.162.167.59', '210.0.210.99', '95.68.204.62', '2.139.180.220', '122.102.41.210', '64.125.239.114', '1.196.194.152', '27.45.245.111', '112.216.225.254', '125.227.181.216', '117.79.232.199', '88.2.225.91', '64.125.239.71', '175.180.76.227', '64.125.239.176', '64.125.239.246', '64.125.239.247', '64.125.239.240', '64.125.239.241', '64.125.239.242', '64.125.239.243', '27.2.160.158', '113.102.181.209', '203.157.129.30', '64.125.239.248', '64.125.239.249', '110.180.102.111', '121.239.157.229', '178.42.188.122', '183.54.196.7', '122.237.51.185', '220.174.66.115', '36.32.9.219', '84.236.63.14', '117.193.25.58', '64.125.239.173', '114.134.88.230', '176.51.82.4', '64.79.103.19', '115.21.154.79', '60.180.4.162', '121.157.204.76', '183.206.196.48', '24.23.119.63', '190.3.49.10', '118.102.189.226', '189.128.244.75', '121.35.130.198', '116.8.232.186', '79.127.114.65', '119.124.4.49', '123.162.185.21', '114.139.235.117', '61.164.149.33', '220.132.180.231', '101.254.17.114', '185.9.36.50', '120.86.58.123', '188.9.146.195', '117.206.127.178', '123.115.23.177', '189.231.181.130', '116.232.90.123', '61.140.55.89', '123.166.19.230', '184.105.139.76', '118.187.27.97', '175.21.6.95', '41.140.24.69', '113.61.25.246', '60.208.159.55', '114.100.224.71', '119.7.23.170', '209.193.96.150', '217.35.93.105', '114.80.193.34', '39.178.146.193', '223.73.154.76', '118.163.71.161', '41.56.69.44', '179.191.197.161', '27.23.38.137', '1.82.112.13', '119.42.153.147', '220.160.201.91', '61.242.112.199', '93.119.130.11', '78.23.218.87', '88.116.20.74', '220.116.201.243', '59.59.4.131', '220.166.166.170', '180.160.30.101', '112.114.250.107', '58.214.229.57', '111.197.65.176', '180.160.174.33', '217.145.255.75', '180.168.37.129', '121.35.221.42', '111.124.233.248', '121.63.208.197', '117.246.15.116', '88.2.214.103', '59.38.136.239', '103.16.170.202', '216.160.20.56', '31.131.140.24', '207.87.104.98', '23.91.20.13', '64.125.239.62', '121.30.243.14', '187.126.101.95', '221.133.9.29', '93.66.247.93', '94.21.144.41', '119.90.139.50', '114.205.243.86', '94.159.255.212', '119.60.253.159', '71.41.128.198', '86.188.130.238', '123.164.146.246', '171.99.225.132', '1.87.253.113', '59.78.17.10', '118.160.226.110', '87.24.229.42', '123.180.3.194', '181.136.9.137', '58.140.211.204', '180.159.254.15', '209.220.88.236', '58.60.1.19', '110.87.141.66', '223.68.128.165', '91.140.188.59', '187.188.112.35', '92.47.59.158', '1.34.84.15', '185.92.220.118', '67.76.218.194', '207.255.194.18', '180.139.78.224', '111.37.140.6', '203.247.145.54', '137.116.71.170', '204.13.204.139', '171.105.75.232', '14.215.222.184', '106.37.202.3', '189.133.86.164', '112.78.183.38', '24.157.44.6', '213.233.114.98', '111.207.253.193', '85.26.183.205', '218.57.50.91', '85.105.69.78', '23.97.209.164', '118.37.180.225', '103.233.119.132', '186.219.41.84', '180.95.190.52', '71.6.135.131', '114.88.226.97', '98.102.77.67', '113.140.29.6', '60.181.101.198', '182.142.62.229', '183.68.54.234', '109.95.116.138', '60.162.241.178', '119.0.39.227', '183.82.246.132', '79.78.43.183', '113.35.254.212', '190.173.11.230', '119.97.252.126', '89.40.34.71', '64.125.239.116', '94.189.192.175', '27.67.2.21', '60.248.45.40', '115.215.33.116', '141.212.122.130', '41.228.162.80', '78.195.79.7', '123.173.95.226', '180.115.99.230', '123.111.88.108', '41.138.54.23', '83.168.31.102', '173.82.43.20', '46.1.95.194', '179.182.48.145', '122.224.180.94', '111.90.179.154', '195.9.31.146', '1.58.79.131', '101.27.78.251', '139.205.73.223', '113.71.131.61', '59.39.41.18', '195.114.157.229', '60.209.154.190', '197.27.25.194', '10.254.0.101', '10.254.0.103', '121.147.247.160', '115.237.185.198', '119.165.202.139', '197.254.47.106', '121.233.17.226', '110.53.151.24', '45.58.121.104', '64.179.217.140', '98.110.16.12', '190.225.29.39', '114.203.233.112', '1.81.205.156', '189.15.1.54', '220.248.86.3', '221.6.135.82', '223.73.178.78', '189.133.219.27', '14.212.163.239', '117.205.214.184', '172.98.195.36', '223.73.19.193', '200.7.150.123', '222.173.152.18', '212.102.18.173', '201.229.67.171', '202.62.8.90', '221.216.197.139', '125.254.16.155', '14.141.156.27', '175.155.252.60', '116.252.73.51', '222.243.16.174', '218.29.135.134', '223.159.182.160', '1.176.130.20', '183.69.204.175', '64.125.239.233', '187.20.249.58', '171.34.248.169', '27.23.213.45', '58.140.210.197', '218.201.233.174', '36.228.7.207', '221.2.68.38', '116.224.139.137', '141.212.122.134', '125.125.191.236', '212.225.151.14', '59.124.200.97', '119.132.210.140', '115.146.122.178', '62.210.207.107', '125.137.198.98', '59.88.252.238', '42.236.152.169', '58.140.209.87', '59.127.52.180', '87.76.10.243', '222.220.9.5', '36.42.35.35', '72.68.14.179', '69.142.172.132', '1.204.90.193', '187.20.227.158', '64.125.239.92', '64.125.239.93', '80.34.173.128', '64.125.239.91', '64.125.239.96', '64.125.239.97', '64.125.239.94', '64.125.239.95', '78.111.52.247', '64.125.239.98', '64.125.239.99', '195.88.209.6', '85.26.164.149', '111.225.126.150', '77.37.174.126', '58.140.208.211', '183.68.177.138', '114.100.186.23', '180.155.123.3', '119.96.208.200', '182.52.216.44', '177.99.244.207', '119.32.74.64', '113.234.122.205', '82.59.66.107', '182.73.179.217', '58.140.211.124', '113.85.160.213', '164.77.229.214', '119.30.84.245', '112.78.4.36', '87.103.198.146', '116.95.129.171', '183.206.165.166', '59.55.139.80', '180.115.180.254', '117.177.196.24', '118.181.172.56', '88.204.187.90', '212.225.205.23', '49.114.58.62', '167.206.44.30', '27.158.58.58', '206.132.109.55', '98.114.132.72', '112.86.47.236', '108.40.193.71', '84.108.130.73', '41.39.85.157', '203.149.35.238', '36.22.56.214', '96.248.86.151', '61.153.239.122', '112.156.167.148', '110.164.204.19', '61.185.210.118', '119.85.32.93', '213.149.188.216', '112.90.151.49', '104.136.155.44', '111.47.182.23', '118.42.21.144', '64.125.239.250', '188.44.9.217', '217.126.192.47', '118.124.166.70', '212.164.216.144', '218.64.168.47', '59.99.165.168', '61.159.100.98', '139.205.151.224', '201.236.103.76', '61.155.1.98', '121.205.120.18', '182.138.174.240', '64.118.199.50', '95.77.125.80', '116.224.14.208', '112.98.10.87', '222.244.152.13', '183.82.3.223', '182.74.57.19', '120.63.217.115', '46.13.202.194', '178.33.143.7', '123.139.56.149', '123.52.87.196', '36.41.151.1', '179.29.144.114', '59.181.136.94', '110.84.129.110', '188.163.2.99', '120.43.161.64', '183.206.174.17', '195.90.183.209', '211.72.69.4', '141.212.122.110', '58.55.200.187', '125.94.99.216', '148.243.51.18', '60.165.104.84', '46.161.40.33', '139.226.87.246', '62.210.206.180', '189.124.5.165', '80.218.115.97', '106.117.123.10', '61.239.127.212', '200.34.168.21', '120.5.13.102', '61.146.250.35', '116.1.83.171', '91.147.217.235', '211.174.125.10', '180.140.190.146', '114.238.126.149', '122.189.193.93', '64.125.239.5', '14.149.2.122', '67.218.96.150', '162.252.57.212', '112.64.60.35', '210.245.27.251', '223.68.186.217', '114.45.181.222', '36.48.213.217', '113.102.244.21', '93.94.91.180', '219.92.101.28', '222.80.246.28', '122.242.88.118', '59.62.196.165', '37.208.195.151', '12.26.230.20', '90.176.255.71', '223.96.29.24', '103.27.237.123', '85.26.165.67', '61.48.183.60', '188.12.62.24', '117.156.3.222', '125.34.28.65', '189.45.8.154', '178.118.176.161', '211.143.214.208', '123.59.51.232', '14.140.175.74', '81.200.127.220', '81.214.151.214', '88.15.190.220', '187.192.157.239', '222.246.185.114', '49.77.241.60', '80.95.78.123', '183.208.97.166', '170.5.2.221', '171.254.3.139', '122.95.226.3', '95.242.200.191', '117.27.186.7', '88.41.136.235', '182.247.107.203', '171.113.222.165', '110.44.123.165', '115.58.15.202', '187.87.79.153', '67.53.19.46', '139.208.36.80', '117.239.65.173', '113.12.161.195', '110.179.62.56', '122.224.132.90', '14.119.37.236', '115.60.17.164', '80.95.81.69', '212.72.132.250', '84.232.230.233', '118.174.192.70', '177.36.44.66', '37.247.108.84', '210.211.99.137', '82.0.87.65', '27.147.133.51', '37.247.108.82', '183.206.202.24', '183.97.112.118', '78.188.75.21', '94.156.136.7', '124.119.85.127', '1.86.2.140', '124.65.118.22', '192.240.96.106', '222.209.38.245', '147.30.185.135', '123.231.44.115', '50.155.141.199', '1.188.81.11', '188.136.52.52', '162.248.243.178', '222.87.137.154', '49.67.242.44', '222.190.232.34', '113.225.59.44', '125.119.250.182', '123.138.19.232', '71.251.135.166', '211.23.240.19', '5.105.193.97', '61.172.253.34', '31.134.59.193', '14.122.0.204', '179.111.12.67', '189.108.236.84', '60.13.175.132', '117.13.4.239', '118.117.104.33', '189.113.205.36', '116.236.232.253', '121.200.63.140', '121.97.63.56', '77.79.108.35', '180.250.205.45', '59.57.242.162', '116.211.217.178', '185.42.226.217', '64.125.239.120', '1.55.139.143', '72.82.228.10', '203.170.167.227', '203.156.127.27', '27.214.33.232', '41.205.64.42', '78.106.21.87', '123.138.33.68', '222.142.187.114', '110.178.58.202', '185.6.124.84', '37.156.24.75', '109.227.116.79', '219.235.88.193', '118.121.68.45', '59.33.5.122', '61.93.66.199', '141.212.122.131', '190.170.130.209', '183.156.4.149', '47.23.56.3', '14.28.140.60', '121.41.15.79', '123.56.130.244', '60.34.120.90', '187.57.11.181', '118.200.183.199', '111.37.17.21', '110.244.187.251', '188.215.5.189', '203.84.152.162', '27.69.39.109', '69.74.75.130', '61.19.238.51', '117.197.242.247', '111.196.248.212', '123.111.200.64', '74.15.181.25', '200.111.184.150', '196.215.101.57', '80.33.175.129', '212.225.223.156', '113.134.0.163', '110.88.106.221', '223.81.192.11', '14.44.3.194', '113.89.133.243', '59.53.29.84', '81.170.210.106', '1.199.173.191', '109.74.227.34', '115.244.225.41', '189.62.10.9', '202.191.247.38', '218.189.225.179', '95.253.179.80', '1.87.210.150', '217.197.253.136', '1.179.175.249', '64.125.239.58', '180.106.204.24', '61.93.96.82', '112.225.137.252', '119.85.35.149', '58.212.114.95', '46.61.209.2', '14.136.163.100', '114.139.231.131', '223.10.139.201', '111.4.89.100', '36.233.134.106', '116.116.98.214', '121.11.58.34', '223.147.34.135', '115.201.205.92', '119.247.16.171', '186.116.172.91', '58.42.31.36', '118.161.82.192', '112.109.58.15', '110.78.173.250', '115.78.238.117', '218.18.124.116', '177.239.114.12', '91.243.100.134', '80.95.39.112', '190.55.247.101', '87.1.180.251', '139.205.31.184', '182.243.58.230', '220.135.101.220', '27.147.156.5', '115.236.9.74', '179.232.110.37', '59.172.31.67', '59.53.116.122', '117.222.110.243', '216.126.193.23', '58.140.208.224', '222.217.31.192', '222.138.22.250', '46.162.194.210', '188.11.16.38', '125.86.93.180', '106.248.203.146', '27.24.189.187', '194.150.60.65', '119.181.203.174', '134.196.150.202', '187.72.11.221', '46.244.85.191', '113.175.112.21', '204.13.1.100', '180.177.173.55', '197.248.119.250', '101.229.252.58', '199.195.252.21', '172.98.67.47', '27.251.102.71', '140.113.92.55', '185.92.223.253', '1.20.193.99', '122.159.181.212', '114.43.18.67', '93.116.152.161', '91.139.242.171', '211.157.134.148', '188.254.251.41', '115.54.20.147', '153.3.24.10', '158.123.179.175', '84.2.12.17', '14.44.111.138', '115.217.113.90', '219.149.54.142', '89.253.137.176', '62.210.136.217', '110.77.154.66', '178.249.14.138', '125.93.46.78', '186.109.89.45', '89.148.28.124', '1.198.23.45', '183.36.64.132', '185.13.112.27', '59.127.100.246', '195.22.226.18', '116.10.144.126', '113.82.229.98', '115.224.250.235', '116.81.118.24', '58.42.241.97', '14.209.23.15', '62.30.77.173', '192.3.13.67', '119.185.10.178', '116.226.161.83', '64.125.239.244', '95.6.18.15', '125.72.247.127', '64.125.239.245', '113.247.189.163', '117.135.227.200', '216.243.31.2', '157.122.164.35', '14.148.37.252', '116.114.46.223', '221.39.77.144', '124.192.188.254', '68.187.6.130', '223.167.248.173', '1.85.99.78', '31.11.85.137', '185.50.232.84', '116.249.68.172', '178.118.206.127', '184.74.46.82', '111.252.248.188', '195.188.250.96', '8.12.98.198', '59.188.239.157', '31.198.102.212', '148.244.217.17', '78.172.203.165', '124.72.112.141', '93.90.32.118', '68.196.112.56', '116.226.101.48', '109.1.181.204', '218.84.202.190', '14.217.29.250', '59.172.211.1', '106.117.44.166', '27.26.36.32', '89.37.214.137', '82.79.116.95', '212.85.94.84', '111.37.21.238', '121.231.7.157', '219.154.112.39', '115.214.47.141', '64.125.239.200', '61.178.146.162', '112.104.165.69', '187.114.50.238', '177.141.45.181', '111.182.223.77', '190.69.155.237', '62.240.100.13', '58.140.210.76', '112.28.36.215', '58.64.147.208', '49.151.71.172', '111.74.36.180', '199.15.184.2', '218.90.155.174', '180.210.200.130', '110.21.6.221', '176.67.37.114', '39.253.105.10', '64.125.239.41', '189.210.254.176', '14.109.149.182', '218.103.24.132', '27.118.26.246', '85.130.24.113', '183.53.27.242', '1.22.192.192', '59.42.95.110', '14.146.217.35', '49.66.221.209', '39.78.212.87', '190.216.116.170', '64.125.239.54', '85.52.224.209', '221.3.134.105', '190.74.48.2', '67.17.174.251', '58.46.64.90', '95.51.101.97', '176.120.180.241', '40.135.233.14', '86.98.134.107', '217.65.12.106', '14.139.188.174', '190.7.129.148', '14.37.83.169', '122.151.98.65', '115.214.208.197', '111.175.194.219', '59.60.224.66', '64.125.239.51', '121.204.40.181', '189.106.224.194', '96.56.66.132', '59.103.167.86', '83.66.166.120', '218.93.5.194', '122.4.19.233', '39.50.242.21', '111.165.14.73', '210.61.150.154', '112.239.3.196', '39.163.68.42', '79.104.22.86', '88.42.125.65', '110.249.162.42', '119.50.54.67', '46.99.137.45', '88.124.134.55', '66.77.221.110', '110.255.90.244', '183.164.47.162', '180.141.164.93', '171.13.217.190', '212.43.34.10', '77.121.97.167', '112.101.12.117', '58.249.125.76', '195.235.215.61', '139.202.57.40', '54.146.8.158', '41.202.111.202', '124.126.211.182', '182.148.241.17', '27.216.254.135', '112.247.223.105', '114.254.180.165', '42.53.50.176', '61.164.211.17', '190.56.166.110', '97.80.136.77', '113.56.62.102', '189.238.102.93', '218.79.72.88', '187.188.90.147', '46.237.95.162', '27.187.150.33', '113.104.33.66', '218.23.51.126', '119.90.138.60', '59.40.73.167', '27.18.148.139', '130.117.169.14', '183.97.45.16', '74.82.47.46', '222.93.157.230', '182.72.59.130', '59.120.39.44', '67.53.106.194', '109.166.217.242', '115.60.95.146', '188.22.115.236', '181.26.7.141', '184.105.139.111', '113.160.105.220', '118.71.39.155', '60.219.236.220', '186.103.152.10', '106.111.52.21', '203.59.72.227', '94.88.95.83', '69.95.109.34', '202.39.254.231', '200.88.240.211', '79.121.99.13', '186.151.181.126', '187.138.0.92', '212.0.140.187', '175.197.250.187', '46.214.134.0', '114.34.247.198', '121.32.135.82', '108.61.173.196', '175.164.224.208', '103.54.202.113', '203.200.18.130', '123.29.0.141', '14.110.80.4', '210.71.206.217', '86.123.138.37', '89.122.43.106', '115.222.232.214', '74.115.176.100', '49.71.246.17', '109.197.87.122', '1.26.198.233', '113.0.224.118', '180.175.235.153', '183.221.100.238', '212.225.151.180', '187.180.14.141', '113.96.0.186', '219.136.97.249', '82.106.58.185', '50.255.96.65', '85.18.10.18', '183.206.165.11', '221.227.112.242', '183.82.240.237', '118.26.192.46', '120.84.184.200', '210.242.156.227', '109.184.168.87', '123.101.204.167', '94.26.36.4', '122.225.36.118', '60.177.148.183', '114.243.253.120', '180.58.53.127', '222.186.190.71', '85.255.166.158', '125.72.10.199', '171.38.169.93', '99.234.131.162', '60.221.103.103', '183.12.66.87', '116.249.226.166', '94.102.60.142', '27.124.199.165', '132.35.132.136', '117.150.233.73', '114.135.11.143', '171.249.77.212', '84.193.193.10', '58.49.195.161', '119.117.243.120', '42.85.133.82', '59.95.187.79', '200.171.80.212', '113.66.62.6', '203.77.248.69', '95.58.30.138', '189.169.109.35', '5.160.247.156', '58.140.208.231', '195.3.158.54', '190.128.247.178', '78.25.120.5', '216.218.206.86', '216.218.206.87', '216.218.206.84', '96.232.5.158', '188.12.13.216', '219.92.90.9', '92.243.103.34', '188.241.20.27', '182.149.25.104', '113.104.34.145', '59.172.59.138', '193.107.150.137', '172.98.67.56', '124.167.226.222', '190.30.68.189', '106.45.186.4', '93.180.54.159', '41.39.9.226', '42.48.211.21', '121.175.133.200', '95.66.103.194', '112.12.48.194', '124.115.170.4', '110.230.40.226', '89.165.72.190', '111.85.83.22', '201.91.201.12', '120.38.245.209', '200.146.119.244', '190.100.214.104', '179.177.150.85', '60.11.240.191', '186.95.63.89', '188.95.105.124', '41.237.155.34', '112.67.45.202', '121.136.93.252', '101.16.170.56', '192.100.100.249', '114.119.37.86', '124.77.106.203', '223.206.31.239', '125.121.206.253', '217.219.67.177', '190.90.194.66', '75.155.151.162', '203.186.178.155', '192.3.226.86', '61.142.181.203', '220.164.126.15', '88.12.29.97', '190.72.86.76', '221.212.232.94', '183.129.153.66', '179.111.237.139', '117.12.50.220', '58.53.151.62', '78.162.79.203', '121.61.115.86', '49.64.159.210', '124.117.182.108', '120.4.171.37', '78.152.122.196', '181.225.130.139', '189.244.11.204', '63.131.251.133', '58.18.128.53', '125.209.71.138', '141.212.122.106', '111.179.81.126', '139.205.78.142', '12.35.157.36', '187.123.144.174', '140.187.64.17', '183.206.27.101', '112.102.110.108', '181.54.172.20', '78.49.122.232', '182.127.254.203', '112.66.75.248', '69.38.250.87', '223.148.51.91', '201.20.78.66', '90.83.58.18', '123.97.164.200', '119.121.38.159', '201.219.3.115', '116.226.124.86', '185.37.118.91', '58.238.12.12', '95.76.65.139', '60.10.225.53', '202.176.81.117', '36.3.92.36', '116.29.2.47', '113.65.237.150', '182.200.84.192', '187.15.181.255', '1.162.186.100', '119.186.105.106', '106.39.30.114', '27.155.92.25', '108.51.125.35', '89.152.252.243', '92.55.93.169', '78.22.90.171', '61.38.225.134', '49.67.214.47', '41.41.183.58', '61.0.61.144', '1.253.110.89', '122.0.1.62', '189.112.106.76', '223.73.87.193', '213.74.186.93', '31.44.160.241', '36.72.229.147', '162.244.35.24', '182.87.233.107', '119.118.211.2', '159.122.232.87', '125.138.203.121', '1.32.73.198', '200.253.135.244', '59.49.185.90', '58.152.249.213', '183.54.162.98', '175.164.178.172', '124.130.136.110', '180.115.53.201', '223.73.93.42', '95.236.174.110', '175.208.249.153', '185.42.225.18', '202.66.26.180', '119.49.6.22', '218.92.203.186', '50.7.124.245', '171.114.31.183', '85.229.7.21', '222.84.42.43', '125.86.89.53', '92.140.203.195', '73.173.107.211', '82.221.105.7', '125.77.215.216', '203.115.100.53', '115.198.187.15', '46.40.96.179', '218.157.206.102', '216.24.205.66', '141.212.122.137', '31.13.39.98', '184.105.139.83', '203.130.208.2', '113.75.25.90', '205.172.164.8', '36.62.43.161', '187.19.202.222', '113.247.242.14', '114.44.236.77', '222.65.107.8', '69.1.112.146', '60.10.70.107', '1.204.8.5', '5.202.121.146', '88.249.206.180', '14.162.141.254', '61.170.152.127', '122.72.1.95', '188.138.9.50', '117.218.47.171', '101.225.57.213', '171.88.167.20', '91.218.96.34', '91.106.77.47', '182.245.182.60', '115.45.17.205', '192.152.5.236', '111.76.12.222', '64.125.239.3', '117.206.105.190', '203.45.112.171', '121.40.195.144', '183.105.193.17', '120.209.85.169', '78.188.139.130', '123.163.151.237', '117.66.45.21', '88.247.170.180', '117.10.57.35', '119.184.87.53', '71.183.233.86', '202.148.22.130', '88.130.207.4', '116.234.214.72', '123.152.245.71', '123.57.228.161', '216.218.206.74', '1.197.42.139', '46.107.116.121', '111.124.101.98', '185.86.164.246', '77.254.177.177', '148.243.197.138', '106.226.100.40', '194.125.224.13', '125.227.119.70', '180.124.75.207', '122.117.175.91', '95.137.245.46', '183.7.105.246', '73.198.31.247', '64.125.239.232', '79.148.247.179', '223.241.133.190', '64.125.239.27', '101.71.195.100', '146.148.204.2', '27.46.135.119', '182.129.215.162', '1.161.254.190', '120.237.44.18', '71.163.17.30', '93.122.192.52', '218.201.121.86', '183.29.236.20', '46.18.124.26', '122.5.225.168', '184.105.247.240', '183.161.28.248', '103.16.202.2', '183.44.119.11', '222.186.34.74', '61.155.138.0', '222.74.238.66', '103.21.52.82', '61.185.198.154', '115.228.182.144', '212.102.13.140', '64.125.239.144', '58.48.153.46', '173.220.149.166', '124.226.40.230', '36.45.169.74', '212.31.112.194', '1.25.201.78', '118.42.44.9', '117.214.81.27', '183.51.198.218', '60.252.49.57', '58.140.211.31', '117.41.185.33', '220.191.251.136', '110.52.251.157', '64.125.239.45', '119.96.53.0', '64.125.239.47', '64.125.239.46', '125.24.77.3', '64.125.239.40', '64.125.239.43', '64.125.239.42', '195.98.80.142', '125.120.153.216', '64.125.239.49', '64.125.239.48', '78.108.249.118', '82.107.33.29', '27.191.42.206', '119.1.151.194', '124.167.197.208', '38.99.171.40', '122.225.226.86', '115.194.28.167', '50.197.23.187', '14.43.225.111', '114.97.223.3', '179.99.204.171', '186.220.169.71', '113.117.80.139', '164.77.199.118', '111.122.172.50', '181.49.210.18', '27.98.252.110', '73.168.95.189', '58.140.208.178', '89.26.123.81', '2.50.2.38', '61.238.106.10', '219.92.129.143', '58.140.208.174', '183.206.202.107', '118.175.28.39', '64.125.239.239', '150.255.241.83', '109.86.36.138', '183.154.36.115', '175.102.32.77', '120.7.242.216', '39.47.150.127', '124.78.81.171', '222.130.117.52', '185.49.58.94', '93.170.0.134', '178.187.82.195', '27.212.206.103', '118.213.58.104', '182.133.208.74', '5.76.30.2', '222.89.60.37', '220.200.25.248', '106.83.53.43', '62.68.72.19', '148.168.1.213', '78.41.67.194', '221.130.184.26', '64.125.239.238', '201.8.75.17', '183.206.22.5', '37.235.53.60', '220.172.211.62', '98.102.200.172', '218.5.11.123', '202.122.102.184', '113.94.204.104', '95.68.103.153', '41.164.37.237', '181.88.178.40', '79.170.166.219', '205.185.115.15', '162.244.32.49', '46.10.238.14', '117.68.33.179', '211.221.128.214', '61.178.31.22', '122.164.77.105', '216.50.76.22', '111.192.22.18', '113.108.254.21', '119.167.118.30', '78.30.128.22', '58.60.46.225', '1.204.184.159', '125.94.94.189', '123.55.47.154', '222.82.171.129', '200.109.42.251', '125.210.133.216', '72.226.90.146', '178.116.137.209', '110.78.173.78', '115.68.2.56', '124.128.158.46', '218.255.134.70', '123.181.139.63', '92.255.195.205', '73.196.81.156', '140.114.204.59', '112.81.141.234', '117.151.161.47', '1.214.42.122', '58.208.31.10', '111.126.49.64', '45.56.68.164', '115.41.28.106', '163.125.199.170', '183.88.4.232', '189.174.232.92', '182.42.32.107', '64.125.239.194', '59.172.146.147', '114.113.221.162', '64.125.239.197', '64.125.239.190', '192.168.0.254', '163.19.216.177', '64.125.239.193', '222.75.107.246', '113.236.24.180', '64.125.239.198', '64.125.239.199', '125.71.162.180', '117.79.232.229', '14.155.75.196', '106.226.30.65', '123.170.253.246', '61.130.100.110', '175.151.87.41', '123.139.139.95', '183.69.233.217', '183.148.157.90', '171.83.35.122', '117.90.140.137', '203.207.104.18', '106.51.190.123', '139.255.45.202', '37.193.101.237', '106.36.6.202', '91.228.179.98', '183.157.32.173', '199.101.186.159', '112.161.209.237', '123.255.251.178', '49.207.70.186', '154.121.0.6', '41.203.87.2', '182.247.134.37', '117.9.178.134', '58.224.111.165', '123.160.94.3', '114.226.0.82', '81.4.129.246', '1.55.134.7', '113.84.255.131', '106.39.30.108', '61.242.112.119', '89.97.162.130', '185.10.43.143', '119.134.53.162', '111.161.65.144', '109.238.183.48', '195.184.249.81', '123.169.145.220', '175.143.155.53', '1.160.217.184', '123.214.74.77', '179.180.202.233', '114.205.243.40', '125.69.39.95', '49.72.166.61', '64.125.239.180', '141.212.122.64', '89.212.119.185', '141.212.122.66', '141.212.122.67', '141.212.122.68', '141.212.122.69', '118.163.88.138', '40.128.145.2', '47.16.85.247', '1.204.79.2', '113.65.192.134', '192.31.114.252', '175.162.71.62', '46.254.186.36', '64.79.90.185', '183.135.169.153', '116.17.43.156', '110.53.14.93', '177.84.70.47', '125.230.146.119', '24.103.23.6', '59.46.38.73', '110.12.161.203', '85.97.202.132', '88.150.133.19', '221.216.142.118', '64.125.239.188', '49.231.24.226', '110.179.33.67', '86.62.117.188', '58.221.199.238', '58.47.237.180', '68.88.210.73', '122.225.43.134', '187.141.103.121', '183.20.211.136', '119.56.212.126', '82.247.165.98', '95.54.172.216', '64.125.239.177', '64.125.239.174', '64.125.239.175', '64.125.239.172', '213.215.250.115', '64.125.239.170', '64.125.239.171', '85.133.147.246', '192.145.247.24', '36.48.93.119', '113.203.205.184', '125.113.132.240', '111.192.12.54', '87.249.206.208', '200.8.105.41', '112.67.208.65', '162.17.96.114', '113.140.9.50', '59.40.51.64', '183.238.58.237', '117.91.2.202', '175.25.172.37', '82.201.208.178', '1.198.67.13', '190.74.113.121', '41.47.201.236', '171.14.167.205', '146.185.239.102', '62.210.25.83', '179.187.95.229', '196.44.108.118', '106.59.28.236', '216.218.206.95', '5.236.117.192', '188.66.80.19', '181.92.64.204', '119.129.209.211', '183.96.166.49', '118.33.240.189', '190.218.122.94', '113.174.75.241', '58.218.160.99', '1.169.211.139', '189.219.97.107', '114.27.205.132', '120.88.186.152', '14.37.115.67', '113.30.141.234', '59.44.89.189', '95.104.247.73', '109.233.50.167', '188.173.108.125', '93.65.47.29', '221.207.246.84', '122.214.243.12', '171.217.217.113', '190.148.172.38', '157.122.164.88', '220.178.8.250', '191.188.117.22', '118.99.232.181', '116.75.59.183', '106.115.114.48', '182.71.18.187', '219.109.48.16', '58.245.154.101', '115.215.115.77', '218.59.187.46', '70.39.80.200', '58.209.99.167', '222.168.33.116', '10.254.1.127', '14.208.242.73', '59.45.74.66', '119.6.97.216', '196.47.173.21', '106.8.223.117', '183.88.89.224', '184.105.247.251', '184.105.247.252', '221.156.229.179', '121.62.84.89', '112.234.76.58', '116.234.179.202', '114.37.95.187', '125.97.246.5', '186.80.96.95', '79.136.168.189', '222.240.172.98', '178.158.104.118', '182.88.93.89', '161.9.162.252', '210.61.246.72', '178.24.214.21', '221.4.133.121', '123.139.73.202', '194.225.56.195', '114.37.76.144', '183.157.43.133', '58.16.225.243', '116.1.115.197', '27.22.58.232', '219.233.233.58', '195.72.202.160', '223.15.11.78', '62.75.189.85', '64.125.239.56', '64.125.239.57', '58.140.211.2', '64.125.239.55', '64.125.239.52', '64.125.239.53', '64.125.239.50', '188.173.185.118', '123.111.88.119', '42.243.212.104', '14.44.111.210', '79.136.209.30', '114.244.149.159', '64.125.239.59', '222.91.58.180', '113.251.93.140', '140.224.89.59', '24.43.188.54', '115.86.148.128', '114.215.143.210', '61.90.47.159', '192.200.8.63', '180.103.243.101', '60.2.41.98', '194.152.35.184', '188.95.110.120', '219.157.131.59', '115.78.235.10', '59.92.231.3', '118.248.224.139', '61.167.59.249', '60.180.130.106', '153.141.54.34', '113.194.249.174', '64.125.239.184', '1.193.55.89', '183.204.172.245', '49.14.148.64', '82.117.205.6', '41.203.232.199', '2.229.48.215', '115.228.152.90', '122.239.179.44', '37.229.98.71', '183.143.113.173', '14.192.241.35', '64.112.195.109', '177.12.80.97', '122.247.158.183', '5.190.65.113', '223.73.97.139', '61.90.109.254', '50.252.197.194', '111.37.16.245', '220.171.237.23', '45.32.253.28', '95.161.227.234', '41.41.234.146', '88.249.114.33', '211.25.11.17', '117.89.141.245', '125.75.234.202', '189.50.144.37', '61.171.138.34', '46.177.88.144', '119.121.150.249', '41.129.200.194', '222.89.159.187', '190.198.117.35', '114.139.157.64', '46.42.2.59', '31.223.61.157', '49.0.1.103', '76.189.234.83', '222.67.199.60', '187.178.250.41', '37.130.205.114', '167.57.121.234', '188.168.96.207', '36.237.231.33', '175.163.153.79', '218.1.31.135', '58.140.209.22', '114.45.23.36', '125.130.175.169', '61.19.56.188', '183.22.178.229', '121.186.56.173', '58.51.228.171', '218.75.22.196', '222.180.222.233', '14.28.2.115', '223.96.148.48', '79.167.93.158', '58.141.250.58', '101.31.251.71', '61.19.198.231', '98.110.19.87', '64.125.239.183', '64.125.239.182', '64.125.239.181', '59.125.242.13', '93.163.61.98', '64.125.239.186', '64.125.239.185', '85.94.186.160', '180.120.200.39', '64.125.239.189', '180.122.142.214', '192.5.3.38', '74.82.47.24', '217.75.49.254', '223.149.16.172', '207.38.65.192', '113.235.6.199', '112.194.100.21', '1.61.87.149', '103.252.25.41', '141.212.122.77', '106.39.222.202', '187.19.127.210', '219.145.195.101', '141.212.122.76', '91.187.97.2', '113.19.241.157', '61.141.166.226', '193.231.43.9', '182.115.51.65', '78.96.234.7', '59.126.156.210', '118.187.26.115', '77.87.96.18', '1.179.149.186', '141.212.122.73', '49.205.17.1', '14.18.183.242', '121.33.226.158', '182.38.139.132', '198.100.160.44', '78.10.118.165', '112.28.38.60', '14.102.78.244', '183.208.142.25', '221.125.252.235', '130.126.255.145', '90.148.10.190', '38.98.43.202', '113.81.83.178', '141.212.122.78', '59.92.149.87', '169.229.3.90', '111.224.167.149', '112.165.225.229', '122.227.89.82', '141.212.122.72', '141.212.122.71', '141.212.122.70', '27.193.129.229', '123.185.163.33', '85.130.68.156', '95.43.105.78', '221.217.78.231', '50.182.143.63', '213.238.102.25', '180.164.209.231', '112.194.248.10', '14.106.227.203', '101.204.83.98', '187.175.159.180', '117.200.162.178', '200.24.40.50', '14.108.150.214', '121.225.163.239', '120.150.140.168', '115.235.235.218', '101.108.134.54', '139.203.96.38', '194.102.70.14', '79.101.36.210', '10.138.100.14', '171.113.114.113', '78.188.104.245', '223.90.8.133', '189.69.28.163', '131.0.6.172', '203.115.119.178', '81.12.211.126', '121.15.30.204', '183.77.233.239', '182.35.34.65', '64.125.239.169', '64.125.239.168', '202.142.159.34', '171.91.70.79', '64.125.239.164', '64.125.239.167', '110.17.81.182', '64.125.239.161', '64.125.239.160', '64.125.239.163', '64.125.239.162', '14.122.172.87', '123.123.44.243', '218.67.165.217', '116.31.132.135', '217.170.193.182', '182.201.236.31', '175.43.105.201', '114.33.96.217', '175.146.157.156', '61.141.201.5', '171.221.175.178', '77.29.93.30', '49.205.5.240', '177.179.237.55', '123.156.76.42', '58.16.79.134', '112.65.240.228', '177.182.71.189', '121.62.187.139', '59.125.210.229', '116.8.99.202', '222.80.236.32', '114.35.2.11', '116.23.70.220', '118.193.226.120', '177.238.233.180', '220.178.52.74', '14.104.246.210', '47.60.255.94', '176.100.166.62', '117.0.133.176', '180.180.42.49', '41.44.129.88', '36.68.153.129', '222.80.48.41', '123.117.17.136', '185.50.4.33', '84.10.63.114', '1.160.127.237', '93.119.8.169', '219.78.43.76', '108.12.157.122', '61.238.53.125', '180.156.113.112', '119.205.6.247', '218.76.81.42', '111.85.35.34', '114.246.157.223', '217.128.251.147', '123.1.150.80', '124.74.105.2', '202.166.206.207', '63.234.231.230', '178.25.103.104', '182.149.126.176', '114.222.230.131', '162.247.96.53', '190.96.6.130', '61.219.67.85', '189.229.58.20', '124.79.212.82', '178.75.214.88', '36.69.106.251', '61.142.15.142', '216.218.206.110', '216.218.206.112', '179.43.147.205', '96.224.240.89', '121.46.0.31', '78.137.5.249', '118.212.68.243', '222.94.113.145', '58.72.147.77', '111.126.119.33', '121.24.47.166', '66.162.20.178', '183.20.182.15', '114.94.38.120', '117.150.0.166', '36.231.121.8', '24.199.51.210', '201.80.36.26', '42.63.173.179', '195.182.135.162', '62.210.136.203', '106.117.117.167', '62.210.136.206', '123.235.246.222', '218.94.23.19', '88.250.201.217', '85.105.232.254', '114.95.22.134', '188.86.253.131', '39.77.28.200', '88.249.13.111', '118.189.72.127', '183.37.228.216', '82.80.56.226', '64.125.239.63', '211.199.133.178', '64.125.239.61', '64.125.239.60', '64.125.239.67', '64.125.239.66', '64.125.239.65', '64.125.239.64', '64.125.239.69', '64.125.239.68', '167.61.54.199', '209.119.55.249', '49.75.121.208', '46.237.6.52', '183.28.104.48', '183.83.123.227', '107.170.144.77', '77.87.21.214', '193.208.3.180', '80.179.115.18', '173.70.186.68', '41.142.171.61', '125.34.10.39', '182.202.49.70', '182.110.69.45', '118.81.240.48', '212.143.36.96', '120.132.50.66', '67.84.2.152', '125.66.227.188', '184.69.133.138', '222.217.10.5', '41.39.9.218', '58.140.208.94', '117.4.144.14', '1.81.141.221', '36.48.27.16', '121.239.16.77', '49.72.66.42', '200.206.209.145', '175.180.61.72', '113.140.21.98', '121.12.46.38', '123.181.226.255', '123.157.42.140', '111.179.43.54', '58.209.46.106', '114.83.35.176', '41.33.240.195', '218.75.58.137', '113.68.27.81', '122.89.246.246', '122.7.160.3', '60.29.19.66', '94.85.246.103', '211.75.72.163', '190.85.203.93', '201.191.153.235', '218.22.180.125', '123.30.112.37', '75.147.74.137', '218.97.195.21', '27.23.207.100', '112.254.122.147', '211.162.73.17', '58.49.75.177', '36.36.103.194', '61.171.215.8', '113.161.72.217', '1.63.243.158', '60.180.232.167', '88.248.141.151', '190.85.57.74', '113.57.178.113', '182.36.19.109', '183.208.141.124', '114.196.60.68', '112.14.89.148', '120.24.179.57', '212.225.215.40', '88.87.94.230', '203.90.137.135', '121.12.71.25', '173.61.101.95', '64.125.239.165', '119.126.107.147', '201.209.196.221', '113.250.109.119', '141.85.76.17', '113.132.8.35', '121.22.249.8', '14.199.39.227', '163.142.210.18', '211.23.23.69', '116.21.163.135', '64.125.239.166', '82.117.245.105', '222.216.44.171', '185.3.33.137', '222.65.142.223', '58.140.209.11', '113.104.34.7', '74.68.130.189', '76.18.40.217', '113.14.12.235', '175.193.21.54', '209.254.160.42', '202.99.202.108', '14.223.13.89', '183.82.2.144', '114.94.234.181', '211.208.182.129', '116.228.201.42', '174.137.54.167', '116.249.28.48', '37.105.133.200', '200.207.137.80', '219.86.221.154', '122.228.154.3', '59.20.78.4', '142.255.126.254', '66.87.83.133', '190.73.166.100', '190.38.128.37', '189.111.129.144', '149.3.137.58', '116.5.106.161', '203.195.202.140', '171.89.219.216', '183.9.32.131', '58.140.210.48', '58.19.58.209', '36.227.43.69', '2.180.149.8', '171.223.176.38', '1.82.25.126', '58.68.105.83', '125.46.3.227', '125.79.175.64', '58.140.208.73', '27.185.44.32', '117.156.47.2', '177.140.20.10', '211.235.226.23', '123.192.80.103', '101.254.209.13', '113.183.76.155', '111.113.3.222', '108.29.205.131', '27.145.122.201', '41.189.20.4', '118.216.200.5', '117.26.251.210', '113.76.28.87', '91.99.204.39', '200.116.9.144', '218.85.40.151', '41.43.239.155', '182.86.204.128', '116.1.86.11', '114.46.178.246', '139.204.150.76', '210.222.177.155', '77.45.237.127', '182.133.112.84', '159.253.166.119', '109.77.176.70', '187.255.240.18', '209.141.33.218', '50.151.50.165', '27.117.10.42', '114.96.133.111', '220.181.77.203', '182.34.233.224', '27.151.143.68', '183.2.117.58', '190.221.255.141', '42.116.191.136', '201.83.145.1', '37.152.186.77', '77.48.114.134', '68.143.26.108', '91.207.89.57', '103.40.67.11', '125.65.12.197', '117.13.10.93', '88.247.112.151', '79.17.63.30', '222.168.143.57', '59.19.236.11', '218.95.15.220', '117.172.26.95', '61.177.119.228', '41.250.201.144', '141.212.122.142', '141.212.122.143', '37.148.208.238', '36.103.192.169', '124.160.83.234', '197.44.17.75', '77.50.117.12', '194.51.227.4', '118.129.132.101', '197.35.177.87', '92.223.209.228', '85.95.185.80', '183.62.57.222', '27.152.16.3', '180.153.146.100', '64.125.239.158', '64.125.239.159', '175.1.122.139', '110.156.190.193', '125.93.48.2', '64.125.239.150', '64.125.239.151', '64.125.239.152', '64.125.239.153', '64.125.239.154', '64.125.239.155', '64.125.239.156', '64.125.239.157', '189.248.94.231', '78.164.0.219', '182.146.107.245', '117.41.187.159', '177.73.93.147', '58.10.55.183', '64.125.239.142', '125.139.116.102', '39.75.184.124', '95.139.158.67', '212.225.151.16', '209.248.92.20', '197.44.62.78', '79.189.95.20', '116.58.254.214', '192.23.1.120', '27.187.215.79', '171.125.95.149', '61.234.56.107', '187.20.173.121', '189.165.174.212', '183.12.247.201', '181.15.91.75', '14.32.188.173', '195.24.157.30', '218.75.112.94', '64.125.239.6', '64.125.239.7', '64.125.239.8', '60.18.237.106', '178.184.74.220', '114.143.233.210', '114.100.188.143', '123.233.190.9', '123.185.123.183', '78.168.11.119', '141.212.121.192', '117.207.212.173', '113.194.65.76', '171.90.150.214', '64.125.239.33', '36.108.183.122', '141.212.122.141', '218.91.254.54', '118.112.155.21', '117.10.219.193', '108.2.138.106', '182.36.131.45', '113.224.185.28', '61.167.239.173', '47.16.16.161', '180.156.110.129', '222.87.97.176', '62.150.71.118', '222.161.250.117', '41.138.181.247', '82.42.5.120', '222.161.52.167', '36.97.210.193', '119.128.31.218', '85.178.248.87', '121.15.101.203', '221.11.20.101', '210.50.197.147', '125.71.109.235', '121.207.198.59', '171.109.51.203', '27.23.171.15', '121.42.45.90', '193.151.223.2', '183.1.10.58', '182.147.156.92', '210.0.210.103', '192.168.0.2', '201.16.240.121', '189.43.20.227', '220.165.245.21', '49.75.112.49', '222.168.89.18', '78.109.201.117', '87.197.154.59', '112.5.236.161', '175.25.169.121', '59.125.29.118', '114.96.137.87', '113.106.169.202', '220.249.94.210', '183.206.82.215', '223.150.135.26', '61.238.206.248', '171.7.193.234', '119.75.198.244', '71.118.18.242', '223.73.244.176', '119.6.240.45', '46.215.25.46', '181.175.78.186', '64.125.239.113', '39.90.91.54', '217.218.102.140', '1.204.36.157', '59.46.38.76', '64.125.239.78', '64.125.239.79', '223.81.192.20', '111.140.21.104', '64.125.239.75', '64.125.239.76', '64.125.239.77', '115.213.226.8', '186.88.83.248', '64.125.239.72', '14.158.18.224', '113.130.220.2', '119.135.178.202', '180.253.16.28', '69.74.15.130', '60.215.227.74', '186.93.243.57', '114.143.200.58', '171.213.52.183', '111.172.16.151', '5.22.198.18', '171.211.225.91', '183.149.152.128', '61.141.167.27', '119.115.213.15', '153.129.168.113', '1.164.129.250', '121.176.88.153', '180.251.88.3', '119.6.78.196', '88.249.96.135', '70.182.166.111', '71.188.98.58', '111.79.152.95', '193.248.45.181', '113.88.241.250', '59.50.254.76', '183.69.209.47', '106.40.102.232', '64.125.239.90', '189.231.217.54', '64.125.239.115', '175.23.17.27', '121.11.196.208', '175.213.187.155', '201.22.184.113', '68.99.125.110', '173.254.236.114', '92.112.10.3', '74.77.53.224', '112.85.73.201', '190.60.213.29', '123.138.21.85', '210.117.121.60', '201.149.89.125', '75.27.26.110', '182.84.72.55', '77.29.138.80', '177.75.76.62', '111.161.0.218', '180.106.162.240', '59.99.184.109', '201.20.110.226', '221.3.72.182', '14.115.248.151', '101.94.16.142', '220.174.147.169', '117.139.128.171', '79.39.213.94', '141.212.122.108', '81.234.242.105', '61.175.228.168', '97.77.233.11', '141.212.122.109', '58.212.249.176', '113.66.23.236', '171.96.141.12', '115.236.41.62', '59.40.74.83', '46.23.199.14', '183.88.48.245', '36.234.26.83', '103.43.4.138', '95.79.105.241', '88.147.57.96', '61.82.231.14', '80.78.41.102', '14.150.214.130', '91.135.172.70', '60.25.246.213', '120.195.4.4', '78.96.15.126', '4.16.9.18', '101.85.234.69', '182.45.151.22', '27.150.56.130', '209.37.57.104', '180.172.221.18', '117.151.93.21', '103.250.250.47', '101.69.125.93', '59.173.112.8', '111.37.21.247', '113.63.11.145', '14.156.137.206', '85.18.81.126', '93.74.43.0', '182.253.200.186', '115.202.145.210', '220.134.240.217', '14.159.249.179', '60.190.75.154', '42.236.251.219', '42.89.109.251', '203.110.88.146', '24.199.39.242', '27.156.3.226', '58.140.208.214', '188.26.101.51', '103.239.101.136', '41.205.11.35', '120.2.182.11', '177.103.129.173', '116.231.113.81', '115.62.130.97', '113.164.7.14', '218.55.215.216', '182.106.108.97', '222.93.138.96', '111.182.41.119', '101.75.133.44', '113.160.225.247', '117.44.140.200', '61.55.234.113', '120.86.103.180', '95.225.210.223', '121.175.53.9', '112.233.211.190', '104.4.87.145', '95.78.254.81', '85.237.32.212', '124.131.239.78', '120.212.230.90', '190.93.119.1', '41.46.61.133', '85.95.248.78', '221.210.146.46', '117.82.8.230', '103.36.126.133', '180.171.158.66', '153.199.202.132', '222.216.131.164', '2.50.16.142', '116.216.30.7', '118.124.237.176', '187.78.69.217', '88.40.91.123', '111.161.70.20', '78.189.159.118', '27.18.214.170', '189.244.102.145', '216.8.213.116', '27.3.96.3', '116.232.164.115', '41.41.23.100', '95.240.157.173', '220.171.167.9', '141.212.122.133', '141.212.122.132', '202.103.141.247', '82.221.105.6', '122.176.66.188', '141.212.122.136', '141.212.122.135', '217.173.73.38', '141.212.122.139', '141.212.122.138', '61.187.248.173', '121.63.198.142', '221.193.193.68', '2.92.20.198', '1.192.25.22', '85.192.181.0', '112.225.197.163', '27.43.183.5', '90.182.159.170', '134.19.155.11', '64.125.239.147', '64.125.239.146', '218.59.154.31', '221.213.110.79', '75.82.202.48', '183.157.6.94', '64.125.239.141', '64.125.239.140', '58.49.251.146', '108.27.78.104', '189.70.171.85', '59.56.85.75', '64.125.239.149', '64.125.239.148', '180.170.225.124', '183.6.39.42', '125.92.76.111', '123.138.40.75', '110.252.231.227', '221.238.143.242', '113.139.176.162', '171.40.166.111', '59.127.11.223', '79.129.13.209', '177.0.209.103', '211.97.104.198', '113.13.113.50', '113.122.231.16', '110.156.180.115', '196.203.88.210', '124.217.127.111', '116.74.64.223', '58.140.211.57', '115.209.225.140', '41.188.54.84', '182.100.70.63', '58.211.70.227', '211.143.254.241', '218.67.192.225', '42.61.63.22', '218.75.17.198', '27.23.83.188', '58.210.70.186', '64.71.2.242', '98.101.247.19', '88.250.120.12', '62.3.229.114', '116.11.19.163', '223.240.234.180', '58.140.209.154', '123.163.122.175', '176.103.48.39', '120.71.48.152', '122.238.36.179', '115.159.93.45', '115.47.52.157', '123.162.182.46', '187.62.240.231', '116.253.3.128', '218.89.137.3', '92.45.123.146', '222.217.40.253', '113.161.204.75', '183.45.146.89', '220.181.47.33', '222.218.3.123', '189.35.94.151', '124.122.74.237', '189.50.144.35', '93.125.31.208', '189.204.16.240', '119.249.101.106', '65.26.18.138', '123.151.42.61', '60.19.123.131', '14.207.212.246', '119.76.22.17', '120.5.115.97', '41.224.13.130', '222.203.241.30', '188.227.217.149', '77.1.34.117', '212.93.162.82', '124.11.240.106', '183.222.134.45', '188.44.1.74', '46.233.234.184', '189.206.76.3', '186.205.121.155', '42.236.135.194', '119.129.209.158', '94.123.202.53', '117.211.106.186', '196.219.21.3', '116.11.132.222', '14.218.4.62', '171.221.172.11', '94.26.36.39', '94.75.8.13', '222.179.153.139', '186.115.122.66', '58.56.13.194', '219.140.236.119', '62.210.136.228', '195.174.36.52', '197.44.49.203', '223.67.191.142', '58.120.255.162', '62.75.236.76', '85.99.111.158', '183.212.219.138', '59.115.70.28', '183.184.48.216', '94.98.127.13', '49.206.40.143', '10.6.61.29', '112.102.99.1', '41.228.16.245', '219.132.148.188', '115.215.204.89', '59.57.22.104', '186.120.42.250', '116.7.122.74', '222.37.51.12', '1.198.49.30', '177.156.221.87', '176.100.216.173', '195.208.131.183', '118.139.235.154', '85.95.238.120', '27.188.61.139', '116.23.247.173', '62.231.239.99', '119.142.2.106', '193.107.17.72', '113.104.34.66', '176.73.205.120', '120.195.97.105', '94.156.64.89', '83.87.60.225', '198.2.37.228', '200.123.148.123', '103.49.118.54', '116.23.70.192', '27.156.20.58', '197.44.13.235', '58.38.127.25', '88.0.159.182', '218.22.211.69', '123.158.202.207', '85.121.122.84', '1.62.226.208', '78.23.34.242', '64.125.239.38', '122.142.246.233', '64.125.239.129', '27.208.1.252', '113.249.89.54', '112.140.81.138', '119.117.162.234', '89.251.155.201', '218.25.115.78', '124.120.14.65', '70.169.80.229', '120.193.204.179', '218.64.121.166', '195.136.60.25', '49.171.235.169', '117.37.58.214', '141.212.122.79', '2.187.32.126', '81.89.211.23', '190.49.60.38', '69.118.2.85', '179.184.22.121', '189.121.32.69', '162.247.97.83', '86.34.185.146', '187.36.209.249', '187.4.85.35', '121.149.57.76', '113.160.249.197', '61.172.253.4', '41.237.224.236', '41.43.151.207', '58.213.23.82', '112.166.83.247', '123.180.81.116', '217.127.242.52', '189.122.246.100', '182.227.62.200', '113.79.48.12', '82.78.236.123', '187.86.11.70', '71.254.182.10', '71.183.24.11', '180.173.123.183', '213.198.237.221', '59.26.77.148', '216.191.202.90', '180.164.170.120', '82.79.114.126', '116.25.174.130', '70.29.19.25', '109.100.41.14', '177.141.134.190', '2.189.50.180', '114.250.171.127', '178.23.234.78', '142.0.72.82', '116.228.125.91', '114.219.152.54', '181.63.251.33', '49.83.223.223', '125.89.37.55', '162.204.113.8', '87.223.143.69', '202.198.3.95', '103.27.124.149', '193.93.219.67', '223.64.236.33', '37.57.218.219', '195.112.107.194', '113.70.24.233', '222.246.244.33', '219.149.193.202', '177.194.41.170', '123.128.72.184', '31.181.98.159', '122.155.190.214', '197.14.51.25', '83.110.192.225', '122.234.89.140', '178.117.186.92', '71.6.167.142', '74.194.74.234', '58.17.125.212', '59.56.249.207', '113.134.138.161', '27.118.26.173', '141.212.122.75', '185.109.251.209', '60.54.69.101', '100.37.139.46', '222.105.214.204', '180.157.23.54', '118.102.202.131', '123.168.227.194', '113.88.219.146', '61.172.52.83', '194.184.0.84', '112.5.236.36', '79.182.18.166', '125.7.139.18', '119.139.201.114', '85.26.186.233', '221.208.53.232', '94.42.125.242', '186.67.172.27', '141.212.122.74', '113.104.34.146', '59.40.31.252', '60.162.73.241', '59.127.231.232', '218.205.129.146', '115.192.101.188', '180.87.224.86', '92.50.130.190', '175.161.110.231', '2.35.238.143', '113.229.76.83', '196.215.48.194', '175.21.223.224', '79.0.38.242', '189.14.110.134', '183.15.10.5', '110.175.231.230', '45.34.53.180', '119.42.153.125', '123.171.240.102', '221.235.11.152', '58.140.210.83', '1.32.122.123', '123.150.41.130', '96.88.135.153', '222.173.81.102', '223.96.158.201', '58.140.210.212', '45.63.51.61', '64.125.239.226', '64.125.239.227', '64.125.239.224', '64.125.239.225', '64.125.239.222', '64.125.239.223', '64.125.239.220', '64.125.239.221', '101.205.160.116', '123.136.106.234', '189.149.229.72', '183.224.93.225', '64.125.239.228', '64.125.239.229', '1.171.182.144', '119.120.39.129', '110.253.110.177', '106.2.214.18', '58.16.23.80', '182.202.234.167', '71.6.165.200', '184.105.139.87', '41.196.198.131', '49.118.205.194', '203.130.0.74', '120.6.161.244', '108.223.87.15', '110.187.243.22', '64.125.239.192', '187.139.137.49', '114.139.194.231', '41.42.159.93', '203.124.57.226', '201.209.52.49', '182.73.165.38', '58.140.211.127', '122.233.173.120', '76.117.88.38', '184.105.247.235', '118.122.11.78', '111.73.151.33', '79.15.195.206', '208.87.145.172', '117.64.129.208', '178.142.50.62', '61.136.116.83', '86.98.67.154', '64.125.239.132', '64.125.239.133', '124.107.41.251', '64.125.239.131', '64.125.239.136', '50.117.69.105', '64.125.239.134', '64.125.239.135', '60.186.183.129', '64.125.239.138', '200.206.84.140', '182.243.211.76', '36.63.176.240', '106.119.252.117', '121.63.57.168', '58.39.58.15', '27.3.110.175', '120.37.189.234', '124.117.255.178', '112.216.137.42', '113.20.19.55', '58.152.134.137', '58.59.226.80', '61.164.41.226', '73.46.49.233', '81.136.129.198', '222.85.34.120', '94.156.244.252', '222.232.168.124', '84.196.240.154', '36.6.253.204', '110.77.192.18', '92.81.120.53', '216.67.90.78', '61.51.254.150', '223.73.233.14', '212.110.89.192', '185.65.201.59', '106.76.176.19', '95.9.209.101', '58.140.208.233', '58.16.193.158', '110.73.13.57', '5.234.232.75', '103.43.187.18', '62.210.206.117', '78.185.24.118', '114.35.6.76', '59.127.120.79', '75.145.178.41', '196.12.44.147', '186.93.243.238', '186.219.217.98', '66.176.136.192', '209.101.144.54', '119.132.75.39', '49.4.166.250', '119.130.211.67', '216.96.59.109', '217.25.225.157', '113.240.249.2', '112.28.38.209', '110.87.146.81', '222.210.19.18', '59.99.93.59', '79.24.76.149', '139.205.136.108', '46.183.219.66', '117.23.243.246', '58.62.100.219', '223.9.68.70', '115.89.185.243', '124.64.57.202', '121.176.103.203', '113.116.61.39', '1.62.11.7', '116.68.193.21', '117.198.166.188', '183.9.165.211', '36.109.183.245', '201.141.137.57', '223.235.194.211', '223.166.246.34', '95.254.59.213', '212.225.223.126', '81.9.237.68', '118.109.39.86', '61.54.4.208', '80.72.77.237', '113.107.26.177', '193.169.147.3', '112.86.60.203', '61.227.177.6', '180.165.175.113', '124.227.50.150', '5.2.165.17', '180.71.218.53', '191.184.2.156', '99.96.85.216', '27.159.203.241', '113.84.218.149', '122.225.36.179', '120.9.189.165', '188.124.81.11', '183.238.76.4', '110.167.82.163', '202.124.204.24', '113.139.160.235', '123.30.240.39', '85.26.165.126', '124.107.179.13', '77.253.189.85', '203.116.140.216', '118.102.255.34', '103.247.165.93', '210.56.28.43', '111.123.171.188', '64.125.239.18', '121.126.31.103', '202.70.87.249', '117.41.187.82', '149.129.189.182', '179.185.68.76', '64.125.239.12', '64.125.239.13', '193.16.247.1', '64.125.239.11', '175.204.254.115', '117.24.137.159', '64.125.239.14', '193.188.94.190', '186.24.41.99', '222.180.9.218', '193.124.56.81', '49.148.91.97', '125.78.140.30', '194.28.88.62', '219.134.54.146', '111.182.215.74', '212.170.201.201', '122.241.227.186', '116.9.204.247', '89.83.117.9', '125.85.21.130', '223.247.133.212', '95.173.245.199', '60.215.169.83', '121.173.244.112', '218.109.1.132', '110.16.14.26', '114.35.164.85', '183.97.69.14', '36.229.254.127', '74.79.41.186', '39.68.251.249', '60.181.131.12', '150.254.162.221', '81.65.63.151', '153.170.142.187', '174.99.37.88', '175.212.26.194', '113.28.55.176', '58.196.149.16', '111.206.91.168', '117.14.229.142', '123.13.221.78', '1.81.243.94', '50.196.66.6', '58.140.211.25', '96.227.106.106', '203.217.176.66', '212.164.172.212', '178.24.215.22', '119.0.21.190', '180.213.239.136', '124.227.55.81', '195.175.56.58', '218.75.55.147', '116.5.118.32', '204.11.229.132', '39.168.216.72', '2.118.64.82', '46.108.94.25', '124.111.93.18', '189.210.190.66', '27.204.2.57', '115.197.93.214', '119.41.36.92', '192.254.96.99', '80.11.175.46', '120.107.144.49', '77.125.96.186', '180.172.194.81', '219.144.184.165', '200.60.42.178', '220.189.214.45', '120.70.43.175', '74.82.47.59', '50.68.137.21', '106.39.222.40', '59.6.102.202', '58.140.210.170', '36.80.57.53', '27.17.61.218', '92.70.240.111', '103.25.73.234', '110.169.15.224', '113.243.82.82', '208.80.85.48', '123.57.73.214', '106.114.74.203', '220.176.21.127', '122.6.133.66', '110.85.184.66', '59.46.61.4', '183.189.172.44', '39.163.10.45', '62.149.116.121', '58.216.146.170', '1.30.219.163', '123.115.59.225', '124.227.220.16', '1.187.249.70', '49.75.121.30', '113.67.24.48', '64.125.239.130', '114.162.240.58', '74.114.149.247', '27.205.145.145', '124.224.78.126', '106.39.192.57', '85.102.125.66', '218.1.121.46', '119.130.1.231', '123.131.36.206', '93.141.86.58', '116.50.39.178', '27.118.26.142', '190.0.163.20', '177.55.42.3', '183.83.39.10', '212.47.254.233', '103.250.250.64', '74.116.57.67', '115.59.164.152', '219.149.54.144', '114.255.9.62', '15.90.163.131', '219.149.54.143', '112.4.104.239', '42.89.165.10', '112.226.112.255', '116.24.243.69', '60.10.24.90', '119.90.138.214', '212.122.196.96', '64.125.239.23', '117.63.225.125', '116.28.111.15', '78.159.131.31', '1.202.1.110', '183.247.164.181', '217.197.247.253', '184.106.118.25', '185.73.170.94', '71.188.75.45', '188.137.111.109', '27.145.215.34', '117.8.66.47', '117.173.217.202', '223.159.13.229', '69.31.240.202', '116.1.100.45', '123.163.248.238', '112.117.128.239', '202.109.144.219', '114.197.191.114', '117.62.31.194', '103.56.248.141', '64.125.239.235', '218.65.88.114', '64.125.239.237', '14.217.191.207', '64.125.239.231', '64.125.239.230', '2.180.24.11', '198.184.209.25', '218.83.35.223', '117.41.184.250', '58.140.210.196', '122.230.3.176', '46.218.19.162', '222.172.103.250', '220.133.250.175', '77.48.204.9', '91.139.253.121', '189.225.31.89', '211.100.11.181', '67.207.120.53', '14.150.213.32', '64.125.239.119', '222.43.69.114', '117.177.199.158', '27.24.247.101', '218.29.154.20', '182.39.207.19', '27.189.58.117', '83.17.142.90', '58.140.211.114', '218.255.155.130', '141.212.122.111', '61.239.248.158', '84.198.170.179', '115.235.253.150', '192.116.245.1', '110.73.86.134', '125.211.67.2', '119.26.240.77', '182.128.68.79', '59.61.34.81', '182.74.40.170', '36.110.44.178', '202.104.188.66', '36.71.100.139', '80.53.6.245', '124.229.76.38', '80.14.40.237', '96.8.214.13', '74.82.47.7', '140.240.158.147', '124.118.16.144', '37.202.109.110', '183.141.11.204', '212.23.76.117', '64.125.239.121', '175.151.195.232', '64.125.239.123', '64.125.239.122', '64.125.239.125', '64.125.239.124', '64.125.239.127', '64.125.239.126', '135.1.1.36', '222.161.58.82', '222.73.236.185', '76.124.235.228', '121.146.198.193', '27.190.19.100', '182.241.34.120', '188.36.121.171', '223.30.2.178', '200.70.25.142', '115.148.122.232', '82.78.183.244', '139.170.68.61', '112.5.236.188', '180.143.234.102', '101.22.86.153', '141.212.122.128', '113.252.204.32', '190.40.51.112', '115.207.237.29', '183.46.183.75', '122.86.209.184', '83.113.171.74', '60.196.41.51', '116.58.254.247', '183.208.98.232', '95.30.151.131', '75.148.115.218', '58.42.76.135', '114.105.12.193', '109.227.108.170', '64.125.239.70', '121.31.200.142', '117.71.75.208', '180.242.68.46', '175.22.218.149', '106.18.58.219', '27.215.111.47', '50.252.88.34', '110.81.121.184', '187.79.10.221', '182.243.110.60', '178.254.251.203', '113.251.127.182', '107.7.74.60', '117.213.49.176', '61.91.47.106', '183.193.117.245', '171.8.216.177', '72.149.45.181', '118.116.25.44', '115.238.39.250', '115.152.119.37', '139.200.42.37', '120.24.96.246', '42.113.159.65', '113.200.29.90', '49.80.210.251', '124.238.68.43', '37.104.217.21', '31.172.194.83', '39.85.128.233', '180.113.149.43', '5.29.198.149', '118.96.120.110', '213.132.238.248', '117.88.16.130', '83.63.156.97', '117.64.78.130', '46.20.1.4', '187.51.72.154', '117.242.32.2', '46.32.16.74', '124.134.208.48', '60.180.157.45', '117.28.159.171', '111.126.169.129', '123.56.108.130', '183.234.0.237', '190.110.32.27', '183.96.45.140', '58.252.8.100', '113.142.244.71', '121.229.143.33', '14.18.190.223', '217.110.104.196', '36.47.199.127', '95.38.14.22', '67.14.211.97', '112.109.177.155', '111.242.200.100', '36.48.93.212', '61.154.0.178', '193.189.116.72', '110.7.144.80', '201.174.18.242', '37.150.163.126', '79.129.127.85', '217.165.147.10', '112.113.96.36', '64.125.239.35', '113.83.234.132', '64.125.239.36', '212.225.151.85', '45.32.10.160', '177.205.47.90', '104.207.159.17', '183.224.50.197', '187.142.253.26', '94.98.100.195', '112.28.27.163', '64.125.239.28', '14.48.63.102', '211.22.161.27', '177.192.244.184', '64.125.239.26', '85.105.79.221', '89.38.74.114', '50.205.19.26', '95.79.52.49', '169.57.5.20', '64.125.239.137', '177.238.234.200', '14.134.104.57', '64.125.239.25', '64.125.239.24', '61.19.190.45', '64.125.239.22', '64.125.239.21', '80.73.1.104', '110.12.221.240', '116.10.61.25', '113.59.33.61', '46.117.252.136', '64.125.239.29', '123.14.203.122', '121.62.149.201', '218.75.40.51', '201.209.39.117', '117.41.186.146', '183.20.19.210', '223.75.13.87', '115.227.159.91', '219.223.115.245', '182.200.90.38', '14.150.161.196', '58.140.209.122', '117.80.82.62', '64.125.239.139', '58.247.116.70', '1.4.216.111', '42.59.99.174', '176.77.8.148', '222.82.113.109', '83.244.37.21', '64.125.239.187', '54.88.150.103', '211.107.83.21', '27.155.37.142', '91.98.46.161', '223.73.199.172', '58.244.191.40', '58.23.83.52', '190.253.68.139', '180.2.0.149', '58.140.209.124', '209.143.39.116', '138.117.145.233', '50.77.179.248', '124.231.117.35', '183.34.53.175', '118.212.115.73', '209.141.60.34', '68.213.157.212', '58.153.211.150', '190.254.193.178', '85.237.40.255', '113.227.160.209', '219.146.134.198', '49.88.222.233', '85.35.110.98', '103.224.165.34', '60.21.134.54', '60.190.106.67', '189.252.130.108', '220.173.124.149', '139.212.196.245', '199.201.123.196', '190.210.79.146', '114.27.45.9', '201.170.133.123', '179.127.143.23', '60.173.222.90', '120.37.192.232', '183.230.35.6', '106.112.71.210', '59.89.166.105', '118.180.215.5', '175.171.49.75', '199.47.241.12', '123.129.100.145', '66.99.47.10', '200.29.93.94', '117.41.185.220', '182.44.49.14', '200.45.113.198', '123.141.232.59', '204.140.243.84', '121.235.158.34', '113.20.17.121', '46.100.51.133', '14.18.29.151', '199.195.109.20', '95.77.163.16', '94.183.242.105', '59.8.35.16', '61.136.115.204', '46.162.116.98', '125.127.83.11', '126.213.11.28', '94.139.112.2', '197.162.232.62', '182.92.80.252', '46.55.162.193', '27.25.159.155', '94.126.48.145', '88.26.251.211', '218.203.190.66', '89.203.180.137', '58.246.130.66', '180.139.178.153', '1.169.12.249', '59.88.82.61', '84.197.50.6', '222.76.72.216', '210.179.61.144', '121.207.60.196', '124.67.74.168', '121.148.128.241', '1.50.82.187', '110.72.71.183', '187.162.1.77', '79.120.40.82', '115.205.202.150', '14.145.252.143', '14.44.3.208', '212.123.5.139', '183.193.112.196', '178.45.33.200', '61.173.242.186', '185.3.134.10', '118.248.153.81', '27.46.40.61', '112.242.218.77', '203.186.75.2', '201.238.179.54', '124.79.2.88', '64.125.239.145', '183.206.171.104', '210.56.27.76', '115.236.17.130', '221.237.40.69', '112.133.232.35', '61.139.124.136', '176.61.137.147', '115.200.60.100', '114.103.134.52', '58.152.19.50', '183.202.75.239', '194.78.172.102', '37.114.143.140', '121.133.146.196', '168.187.97.107', '94.153.1.34', '77.105.106.32', '125.84.65.166', '191.255.252.89', '115.54.32.95', '220.178.50.66', '121.56.138.138', '95.68.165.41', '173.52.253.210', '110.154.61.102', '41.32.16.66', '109.81.224.18', '108.170.72.134', '202.47.88.37', '204.16.10.242', '219.232.247.108', '59.120.67.57', '64.125.239.143', '113.96.89.72', '193.1.242.36', '58.176.135.101', '64.125.239.201', '64.125.239.202', '64.125.239.203', '64.125.239.204', '182.116.175.31', '64.125.239.206', '64.125.239.207', '64.125.239.208', '64.125.239.209', '114.80.125.36', '112.5.236.162', '213.180.7.153', '114.38.153.147', '223.246.125.210', '113.142.121.63', '189.46.15.161', '36.72.228.72', '220.189.214.10', '27.118.26.251', '27.13.206.245', '182.243.206.50', '1.60.227.105', '141.212.122.102', '62.90.201.29', '42.243.10.111', '141.212.122.101', '125.46.240.236', '141.212.122.107', '141.212.122.104', '141.212.122.105', '1.58.54.247', '14.18.249.14', '123.157.41.188', '60.189.107.205', '91.224.19.69', '123.246.184.6', '192.19.195.250', '64.125.239.118', '80.50.143.238', '182.132.81.107', '117.221.93.135', '58.114.159.145', '64.125.239.117', '64.125.239.110', '64.125.239.111', '64.125.239.112', '115.160.15.44', '219.140.138.175', '116.23.76.131', '183.9.110.232', '203.192.34.206', '182.84.144.187', '123.150.157.96', '111.227.110.72', '113.78.229.241', '121.40.129.82', '212.170.27.250', '121.8.148.235', '125.34.224.225', '151.202.19.186', '85.108.238.103', '89.213.14.43', '124.226.46.30', '123.110.181.245', '222.245.188.30', '14.135.68.75', '59.53.12.27', '222.180.4.206', '78.22.198.134', '113.107.26.183', '223.73.98.238', '1.199.236.68', '117.4.200.15', '59.57.245.54', '60.173.76.115', '5.12.161.83', '112.65.191.70', '64.125.239.44', '5.97.250.82', '212.156.115.192', '178.72.162.114', '176.114.198.150', '125.16.9.165', '125.39.140.16', '120.24.214.245', '64.125.239.205', '58.19.78.89', '85.99.116.228', '125.46.165.220', '14.104.188.128', '91.236.75.4', '113.247.196.136', '92.242.18.138', '74.82.47.22', '222.234.243.196', '123.138.19.234', '189.106.29.208', '64.125.239.10', '123.180.244.242', '60.210.119.79', '117.63.10.140', '68.175.18.48', '206.251.40.155', '14.118.13.21', '220.164.185.223', '14.198.195.224', '80.69.212.37', '1.60.252.92', '61.218.166.181', '117.194.66.92', '24.167.99.171', '217.171.5.102', '120.37.137.10', '114.226.42.156', '124.131.17.184', '106.9.200.187', '58.211.190.155', '110.184.40.81', '111.93.198.54', '213.248.188.110', '1.254.250.222', '216.46.1.38', '187.138.161.182', '118.102.249.8', '41.71.139.180', '14.155.135.11', '91.185.80.133', '221.219.141.98', '183.20.179.52', '42.122.51.71', '202.142.168.158', '82.81.22.135', '64.125.239.16', '111.127.84.22', '118.252.22.192', '222.64.136.140', '120.193.233.170', '115.171.34.213', '195.175.64.110', '194.0.0.5', '200.71.248.91', '117.146.18.194', '124.118.118.150', '115.230.159.192', '64.125.239.17', '81.45.68.23', '85.105.193.162', '45.35.83.80', '61.164.212.142', '49.72.88.154', '101.86.0.111', '58.55.124.16', '96.56.34.112', '124.163.21.213', '120.72.83.181', '64.125.239.179', '64.125.239.30', '64.125.239.31', '64.125.239.32', '218.5.11.120', '64.125.239.34', '222.186.34.84', '116.226.128.12', '64.125.239.37', '64.125.239.195', '64.125.239.39', '222.223.243.26', '211.96.170.34', '125.92.44.240', '218.78.210.77', '213.147.120.183', '221.154.190.161', '189.14.107.158', '212.104.102.206', '111.91.31.166', '59.61.244.170', '81.21.85.89', '124.89.160.132', '59.49.190.207', '72.94.12.215', '114.215.104.171', '88.10.232.9', '64.125.239.196', '202.100.199.211', '219.140.41.0', '175.17.191.147', '222.85.86.93', '79.183.146.168', '190.73.166.30', '116.235.219.144', '116.5.101.144', '221.226.221.234', '222.88.82.10', '211.75.64.100', '174.7.5.11', '110.6.250.189', '182.75.112.230', '117.90.159.109', '175.197.29.160', '58.240.194.218', '188.18.177.36', '62.103.236.252', '58.140.133.84', '60.223.31.189', '163.172.10.74', '2.49.132.29', '36.63.17.220', '219.144.198.139', '122.3.187.146', '185.23.49.21', '117.218.60.110', '118.36.106.212', '117.239.133.42', '68.114.95.226', '171.221.48.206', '115.202.253.172', '210.78.141.83', '115.182.17.13', '123.111.88.4', '95.80.116.126', '58.219.86.45', '121.86.45.148', '183.26.222.81', '50.5.253.93', '223.154.242.50', '77.60.175.251', '60.178.58.46', '118.192.164.36', '119.11.143.4', '218.5.11.124', '58.253.96.122', '217.133.220.212', '78.84.190.194', '222.255.138.115', '60.173.222.82', '42.202.236.195', '60.216.99.234', '219.157.156.130'])\n"
     ]
    }
   ],
   "source": [
    "# InternalIP returns true if the argument IP address is within the Princeton network\n",
    "def internalIP(ip):\n",
    "    s = ip.split('.')\n",
    "    if s[0] == \"128\" and s[1] == \"112\":\n",
    "        return True\n",
    "    return False\n",
    "\n",
    "# TODO: write code as described above\n",
    "bad_host=set()\n",
    "good_host=set()\n",
    "question_host=set()\n",
    "\n",
    "for i in netflow_data:\n",
    "    if not internalIP(i['Src IP addr']) and i[\"Protocol\"] == \"TCP\":\n",
    "        if ('S' in i['Flags'] and 'A' not in i['Flags'] )or  i[ 'Dst port'] in bad_ports:\n",
    "             bad_host.add(i['Src IP addr'])        \n",
    "#         if (not i[ 'Dst port'] in bad_ports ) and (not ('S' in i['Flags'] and 'A' not in i['Flags'] )):\n",
    "#             good_host.add(i['Src IP addr'])\n",
    "\n",
    "        else:\n",
    "            good_host.add(i['Src IP addr'])\n",
    "\n",
    "question_host = good_host & bad_host\n",
    "good_host = good_host - question_host\n",
    "bad_host = bad_host - question_host\n",
    "print(len(question_host),len(good_host),len(bad_host))\n",
    "print(bad_host)\n",
    "            "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pass the counts you found into the following `check` functions to verify them"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hashes match. Your number of benign hosts is correct.\n",
      "Hashes match. Your number of malicious hosts is correct.\n",
      "Hashes match. Your number of questionable hosts is correct.\n"
     ]
    }
   ],
   "source": [
    "from testing import check_num_malicious_hosts, check_num_benign_hosts, check_num_questionable_hosts\n",
    "\n",
    "# TODO: pass percent values to following check functions\n",
    "check_num_benign_hosts(len(good_host))\n",
    "check_num_malicious_hosts(len(bad_host))\n",
    "check_num_questionable_hosts(len(question_host))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "________________________\n",
    "#### Question 2:\n",
    "Who are all of these potentially malicious hosts? Choose 2 IP addresses in the set of \"malicious hosts\" and see what you can find out about them using `whois` and searching online.  Report the most interesting parts of your findings below. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Answer 2:\n",
    "*TODO: your answer here.*\n",
    "我使用whois查看了37.147.151.110和124.161.166.143两个IP。第一个IP实际上是PJSC \"Vimpelcom\"公司的IP，这是一家提供电信服务的公司，通过一系列移动和固定线路技术提供电信服务。该公司主要在俄罗斯、意大利等国家运营，提供包括传统、移动宽带、固网等一系列语音及数据服务。\n",
    "类似的，124.161.166.143指向中国联通四川省分公司（China Unicom SiChuan province network），这是中国联通在四川省的分支机构，负责该地区的电信服务运营、管理和发展。\n",
    "由此可见，这种方式发现的“恶意主机”很多都是不准确的，其中运营商很多，很有可能是在定期扫描接口是否可用导致产生了大量SYM-Only的报文。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__________________________________\n",
    "## **Part C: Online Port Scan Detection**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the previous sections, we used offline analysis of pre-recorded traffic to identify potentially malicious hosts. A real network operator would not want to wait for offline analysis in order to detect potential threats.  Instead, he or she would configure a network intrusion detection system (NIDS) to use an online port scan detection algorithm to classify hosts as benign or malicious, updating these classifications in real-time as traffic flows occur. \n",
    "\n",
    "### Bro's Port Scan Detection Algorithm\n",
    "\n",
    "The port scan detection algorithm used in the [Bro system](https://pdfs.semanticscholar.org/f121/cde8d3d5364717caf2b91d27a270ec004cac.pdf) was published in 1999 by Vern Paxson, et al.\n",
    "\n",
    "Bro's detection algorithm builds on the same intution that failed connection attempts (SYN-only or SYN/RST flows) are good indicators for identifying scans.\n",
    "\n",
    "The algorithm treats connection attempts differently depending on the service (determined by port) to which the connection is intended.  Bro only tracks failed connection attempts (SYN-only or SYN/RST) to a specific set of \"known good\" services.\n",
    "\n",
    "For all other services, Bro tracks all connection attempts, whether or not the attempts fail or succeed. \n",
    "\n",
    "For each sending host, Bro counts the number of distinct destination addresses corresponding to tracked connection attempts. If the number exceeds some threshold, `T`, Bro flags the host as a scanner.\n",
    "\n",
    "By default, the set of services for which only failures are considered includes HTTP (80), SSH (22), Telnet (23), SMTP (25), IDENT (113), FTP (20), and Gopher (70). These services are \"known good,\" i.e. we expect many connections to be initiated to these services, so we should not count successful connection attempts against a sending host. \n",
    "\n",
    "#### Task: Implement Bro's port scan detection algorithm.\n",
    "\n",
    "Complete the Bro class below to implement Bro's port scan detection algorithm.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import defaultdict\n",
    "\n",
    "# TODO: complete the methods marked TODO in the Bro class to implement the Bro algorithm\n",
    "class Bro:\n",
    "    \n",
    "    # class constructor saves the parameter threshold value and sets instance variables\n",
    "    def __init__(self, threshold):\n",
    "        self.T = threshold\n",
    "        \n",
    "        # self.good_services is the list of port numbers to which successful connections \n",
    "        #     (SYN and ACK) should not be tracked\n",
    "        self.good_services = [80, 22, 23, 25, 113, 20, 70]\n",
    "        \n",
    "        # self.tracked maps sending hosts to a set of destination addresses\n",
    "        #     from tracked connection attempts \n",
    "        self.tracked = defaultdict(set)\n",
    "\n",
    "        \n",
    "    # TODO: block_connection() takes a sending host IP address of an incoming connection\n",
    "    #       returns True if the connection should be blocked (because the host has surpassed\n",
    "    #       the threshold of destination addresses in tracked connection attempts) or False otherwise\n",
    "    def block_connection(self, host_ip):\n",
    "        return len(self.tracked[host_ip]) >= self.T\n",
    "\n",
    "    \n",
    "    # TODO: process_flow() takes a netflow record of a TCP flow that was not blocked\n",
    "    #       (as a netflow record dict) and should update self.tracked\n",
    "    #       with the contents of the record\n",
    "    def process_flow(self, netflow_record):\n",
    "        #传入的是单条记录\n",
    "        src_ip = netflow_record['Src IP addr']\n",
    "        dst_ip = netflow_record['Dst IP addr']\n",
    "        dst_port = netflow_record['Dst port']\n",
    "        flags = netflow_record['Flags']\n",
    "        if dst_ip in str(self.good_services) and (('S' in flags and 'A' not in flags)or 'R' in flags):\n",
    "            #对好的端口，只追踪那些onlysyn\n",
    "            self.tracked[src_ip].add(dst_ip)\n",
    "        elif dst_ip not in str(self.good_services):\n",
    "            #追踪所有对外部的链接\n",
    "            self.tracked[src_ip].add(dst_ip)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that a full implementation of Bro's detection algorithm would also contain a moving time window over which tracked connection attempts are remembered.  This prevents a benign host from being blocked if it is dynamically assigned an IP address that previously belonged to an attacker. However, the NetFlow data we are using in this assignment is from only approximately 5 minutes of traffic, so we don't need to worry about time windows. \n",
    "\n",
    "The following `run_bro()` function takes a threshold value and runs your Bro algorithm on the NetFlow data, returning a set of all addresses blocked during the course of the algorithm. This function is already complete."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_bro(threshold):\n",
    "    blocked_hosts = set()\n",
    "    bro = Bro(threshold)\n",
    "#     print(bro.block_connection('116.211.0.90'))\n",
    "    n = 0\n",
    "    for flow in netflow_data:\n",
    "        n += 1\n",
    "        src_ip = flow[\"Src IP addr\"]\n",
    "        if flow[\"Protocol\"] != \"TCP\":\n",
    "            continue\n",
    "        if internalIP(src_ip):\n",
    "            continue\n",
    "        block = bro.block_connection(src_ip)\n",
    "        if block:\n",
    "            blocked_hosts.add(src_ip)\n",
    "            continue\n",
    "        bro.process_flow(flow)\n",
    "    return blocked_hosts      "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Before running Bro on their network intrusion detection system, a network operator might want to know how sensitive the algorithm is to the threshold variable `T`. \n",
    "\n",
    "In the following cell, create a 120 element list such that element `i` contains the number of blocked hosts in the set returned by `run_bro(i)`.  Then pass the list to the `plot_bro()` function to plot a sensitivity curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "113\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from plotting import plot_bro\n",
    "\n",
    "# TODO: generate the list described above\n",
    "result = [0]*120\n",
    "for i in range(120):\n",
    "    result[i]=len(run_bro(i))\n",
    "    \n",
    "#     print(\"result:\"+(i-1)+result[i-1])\n",
    "    \n",
    "# TODO: pass the list to the plot_bro function\n",
    "plot_bro(result)\n",
    "print(result[100])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "_____\n",
    "#### Question 3:\n",
    "A threshold of 100 is the default for Bro's algorithm. Given the results in the above plot, why do you think this value was chosen?  What are the pros and cons of choosing a higher or lower threshold?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Answer 3:\n",
    "\n",
    "*TODO: your answer here*\n",
    "这个值附近曲线已经比较平缓。如果选取一个比较小的值（0-20），这区间的曲线波动很大，容易错误的识别一些发出正常链接的主机；如果选取比较大的值，可能变化不会很大，同时也会放宽标准，可能漏过一些小规模扫描的恶意主机"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Question 4:\n",
    "A threshold of 100 would have blocked $\\approx$115 hosts (if your implementation didn't, you should check it for bugs).  This is many fewer hosts than the number of malicious hosts found in Part B.  What differences between Bro's algorithm and the method usd in Part B caused this difference? Which method do you think is more likely to be accurate? Why?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Answer 4:\n",
    "\n",
    "*TODO: your answer here.*\n",
    "Bro方法更加严谨。B部分中，只要检测到发送过SYN-Only流，就会被认为是恶意主机。而Bro方法将链接的主机个数也考虑在内，只对常用的good-service进行SYN-Only流检测。其他情况，是查看他连接到别的主机的个数。将扫描的两个特征结合（SYN-Only和大数量的链接其他主机），使得检测更加严谨，因此数目更小。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "___________"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are many other online port scan detection algorithms in addition to Bro. For example, the Threshold Random Walk (TRW) algorithm uses maximum likelihood ratios to tune the threshold parameter in an attempt to block as much malicious traffic as possible without blacklisting benign hosts. \n",
    "\n",
    "If you are curious, the TRW algorithm is described in this paper: http://www.icir.org/vern/papers/portscan-oak04.pdf. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Submission"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "**Remember to \"Save and Checkpoint\" (from the \"File\" menu above) before you leave the notebook or close your tab.**"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
